Bhushan Mahajan
Bhushan Mahajan

Reputation: 67

function donot execute for first time in jquery

Thi function donot execute for first time . Can you please help me . i am using 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; }
});

});

}

Upvotes: 0

Views: 88

Answers (3)

Lee Meador
Lee Meador

Reputation: 12985

Normally this wouldn't be in a function but you do have to define sender first:

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

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

});

The code in the function only gets executed when the function is called. Having the above in the function means that no listener/handler for 'on load' gets set up until the function is called elsewhere.

Sometimes code is in a function to isolate it but you will need to call it immediately in that case:

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

fillnum(sender);

Or even if you don't need a name:

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

Upvotes: 0

adeneo
adeneo

Reputation: 318232

Just write the function like this, and make sure you don't call it before the DOM is ready :

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

Upvotes: 0

Sergio
Sergio

Reputation: 28837

Change your code to this:

$(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;
            }
        });
    }
});

Upvotes: 1

Related Questions