window.load上单独的javascript文件中的引用函数

时间:2015-03-01 05:03:36

标签: javascript jquery

我有以下功能,只允许在文本框中输入数字字符。它位于common.js中以及其他全局函数。

 function isNumberKey(evt) {
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode != 46 && charCode > 31
        && (charCode < 48 || charCode > 57))
        return false;

    return true;
  }

现在在另一个javascript文件中我有以下代码,我正在尝试实现的是将textbox mobilenumber的on keypress事件绑定到上面提到的common.js文件中的函数我已经引用了common.js如下:

/// <reference path="common.js" /> 

window.onload = function () {
      document.getElementById('mobilenumber').keypress = isNumberKey(this.keypress);
};

但我收到的错误是

isNumberKey is not defined $('mobilenumber').keypress = isNumberKey(this.keypress);

当我查看源以检查命名约定时,它是如何呈现的:

<input id="mobilenumber" class="form-control" type="text" value="" placeholder="Your Mobile Number" name="MobileNumber" data-val-maxlength-max="15" data-val-maxlength="Mobile number can not be longer then 15 characters" data-val="true">

我不确定我在哪里出错?任何帮助将不胜感激。

更新

好的,所以我将两个javascript文件移动到一个名为common的文件中,如下所示:

$(document).ready(function () {

document.getElementById('mobilenumber').keypress = isNumberKey(this.keypress);

function isNumberKey(evt) {

    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {

        return false;

    }
    return true;

}
});

当页面加载而不是绑定它时,它调用它,这给了我一个错误,如果未定义evt,我理解因为没有输入,为什么要调用它?我怎么才能绑定它而不必调用它?

3 个答案:

答案 0 :(得分:1)

尝试

$("#mobilenumber").on("input", function(e) {
  return $(this).prop("value", function(_, val) {
    return val.replace(/[^\d]/, "").slice(0, 15)
  })
});

$("#mobilenumber").on("input", function(e) {
  return $(this).prop("value", function(_, val) {
    return val.replace(/[^\d]/, "").slice(0, 15)
  })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="mobilenumber" class="form-control" type="text" value="" placeholder="Your Mobile Number" name="MobileNumber" data-val-maxlength-max="15" data-val-maxlength="Mobile number can not be longer then 15 characters" data-val="true">

答案 1 :(得分:0)

  

JavaScript没有导入,包含或要求。还有其他方法   JavaScript包含外部JavaScript内容,但是......

来自:How do I include a JavaScript file in another JavaScript file?

也许尝试将事件处理程序的功能和附件保存在一个文件中。

答案 2 :(得分:0)

您可以查看以下内容:

http://jsfiddle.net/fq7Lkkyp/

$(document).ready(function () {

$("#mobilenumber").keypress(isNumberKey);
function isNumberKey() {
    alert('check');
    var charCode = (event.which) ? event.which : event.keyCode;
    if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
        event.preventDefault();
        return false;
    }
    return true;
}
});