0

Thi 函数第一次不执行。你能帮我么 。我正在使用 jquery-2.0.3.js

 function fillnum(sender) {

 $(document).ready(function () {
var id = $(sender).attr('id');

$('#' + id).keydown(function (event) {
    if ((event.keyCode < 48 || event.keyCode > 57)) {  return false;  }
    else { return true; }
});

});

}

4

3 回答 3

1

将您的代码更改为:

$(document).ready(function() {
    function fillnum(sender) {
        var id = $(sender).attr('id');
        $('#' + id).keydown(function(event) {
            if ((event.keyCode < 48 || event.keyCode > 57)) {
                return false;
            } else {
                return true;
            }
        });
    }
});
于 2013-07-29T21:48:28.493 回答
0

通常这不会在函数中,但您必须先定义sender

$(document).ready(function () {
  var id = $(sender).attr('id');

  $('#' + id).keydown(function (event) {
    if ((event.keyCode < 48 || event.keyCode > 57)) {  return false;  }
    else { return true; }
  });

});

函数中的代码只有在调用函数时才会执行。在函数中包含上述内容意味着在其他地方调用该函数之前,不会设置“加载时”的侦听器/处理程序。

有时代码在一个函数中以隔离它,但在这种情况下您需要立即调用它:

function fillnum(sender) {
    ... whatever ...
}

fillnum(sender);

或者即使你不需要名字:

function(sender) {
    ... whatever ...
}(sender);
于 2013-07-29T21:46:14.673 回答
0

只需像这样编写函数,并确保在 DOM 准备好之前不要调用它:

function fillnum(sender) {
    $('#' + sender.id).on('keydown', function(e) {
        if (e.which < 48 || e.which > 57) e.preventDefault();
    });
}
于 2013-07-29T21:54:50.823 回答