事件没有在javascript中定义错误只有Firefox

时间:2012-06-28 08:34:41

标签: javascript firefox javascript-events validation

我使用以下脚本验证文本框只输入数字和(。)这意味着它是十进制文本框验证。它在Internet Explorer和谷歌浏览器中工作正常。如果我在FireFox中执行该功能,我得到以下内容错误事件未定义。如何解决此问题?

    function abc(event) {

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

我将此功能称为

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

我为此文本框指定了此验证,

input type="text" id="Total" class="abc"

4 个答案:

答案 0 :(得分:0)

   $('.decimalValidate').live('keypress',function(e){
                              var decimalvalidate=abc(e); //this will point to the event of the keypress.
                              if(decimalvalidate == false)
                              return false;
                         });

我不确定你为什么要做所有的decimalid和decimalval操作,但是如果你想要这个事件,请按照我在上面编辑的代码中所做的那样。

祝你好运。

答案 1 :(得分:0)

decimalval不是Event对象,您必须将它传递给ordert中的abc函数以找出您按下的键:

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

答案 2 :(得分:0)

试试这个

function abc(event) {
        if(!event)
           event= window.event;

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

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

答案 3 :(得分:0)

$('.decimalValidate').on('keypress',function(event){
     var decimalid       =  $(this).attr("id");
     var decimalval      =  $('#'+decimalid).val();
     var decimalvalidate =  abc(event);

     if(decimalvalidate == false)
        return false;
});



function abc(event) {

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

它可以帮助你..