【问题标题】:Javascript Error in FireFox Not in IE and ChromeFirefox 中的 Javascript 错误不在 IE 和 Chrome 中
【发布时间】:2012-06-30 15:48:39
【问题描述】:

我使用以下函数进行十进制验证。文本框只允许输入数字和.(点)符号。它在 IE 和 Chrome 中工作正常。我的问题是我得到 事件未定义错误。如何解决这个问题?我有很多文本框验证。所以我创建了常见的十进制验证,

//Call the Function
                             $('.decimalValidate').live('keypress',function(){
                                  var decimalid=$(this).attr("id");
                                  var decimalval=$('#'+decimalid).val();
                                  var decimalvalidate=ApplyDecimalFilter(decimalval);
                                  if(decimalvalidate == false)
                                  return false;
                             });

//小数验证功能。它只允许一个 . symbol.everything 在 IE 和 Chrome 上运行良好

function ApplyDecimalFilter(id)
    {
        try {
              return NewDecimalFilter(id, event);

        } catch (e) {
            alert(e.message);
        }
    }

function NewDecimalFilter(o, event) {

        if (event.keyCode > 47 && event.keyCode < 58) {
            return true;
        }
        if ((event.keyCode == 8 || event.keyCode == 46) && o.indexOf('.') == -1)  {
            return true;
        }
        return false;
    }

我在文本框中使用这个 decimalValidate 类,例如,

input type="text" id="InputLoanAmount" class="decimalValidate" style="width:100px"

【问题讨论】:

标签: javascript internet-explorer validation firefox google-chrome


【解决方案1】:

在 Firefox 中,event 不是全局的。 window.eventundefined。您需要将事件作为参数传递。顺便说一句,如果你使用 jQuery >= 1.7,你应该使用.on 而不是.live

$('.decimalValidate').live('keypress', function (e) {
    var decimalid = $(this).attr("id");
    var decimalval = $('#' + decimalid).val();
    var decimalvalidate = ApplyDecimalFilter(decimalval, e);
    if (decimalvalidate == false) return false;
});

function ApplyDecimalFilter(id, event) {
    try {
        return NewDecimalFilter(id, event);

    } catch (e) {
        alert(e.message);
    }
}

The live demo

【讨论】:

  • 这种情况在 IE 和 Chrome 中工作。但我无法使用 firefox 在该文本框中输入任何字符
  • FireFox 不允许在文本框中输入字符
  • @user 你是什么意思?能给个demo吗?
  • 我使用你的想法,然后我在 Firefox 中运行我的应用程序,我无法在文本框中输入任何内容
  • @user 你应该使用event.which而不是event.keyCode,再试一次*)
猜你喜欢
  • 1970-01-01
  • 2014-06-16
  • 1970-01-01
  • 1970-01-01
  • 2013-04-22
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
相关资源
最近更新 更多