函数donot在jquery中第一次执行

时间:2013-07-29 21:44:08

标签: jquery

这个功能不是第一次执行。你能帮我么 。我正在使用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; }
});

});

}

3 个答案:

答案 0 :(得分: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;
            }
        });
    }
});

答案 1 :(得分: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; }
  });

});

函数中的代码仅在调用函数时执行。在函数中使用上述内容意味着在其他地方调用函数之前,不会设置“on load”的侦听器/处理程序。

有时代码是在隔离它的函数中,但在这种情况下你需要立即调用它:

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

fillnum(sender);

或者即使您不需要名字:

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

答案 2 :(得分:0)

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

function fillnum(sender) {
    $('#' + sender.id).on('keydown', function(e) {
        if (e.which < 48 || e.which > 57) e.preventDefault();
    });
}