0

我使用以下脚本验证文本框以仅输入数字和 (.),这意味着它是十进制文本框验证。它在 Internet Explorer 和 Google Chrome 中运行良好。如果我在 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

4 回答 4

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 操作,但如果你想要这个事件,请按照我在上面编辑的代码中写的那样做。

祝你好运。

于 2012-06-28T08:40:05.930 回答
0

decimalval 不是 Event 对象,您必须将其传递给 abc 函数才能找出您按下的键:

$('.decimalValidate').live('keypress',function(ev){
                          var decimalid=$(this).attr("id");
                          var decimalval=$('#'+decimalid).val();
                          var decimalvalidate=abc(ev);
                          if(decimalvalidate == false)
                          return false;
                     });
于 2012-06-28T08:40:39.727 回答
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;
                         });
于 2012-06-28T08:42:16.663 回答
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;
}

它可以帮助你..

于 2016-12-22T10:42:13.987 回答