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

标签 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 文件中,我有以下代码,我想要实现的是将文本框 mobilenumber 的按键事件绑定(bind)到位于 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;

}
});

当页面加载而不是绑定(bind)它时,它会调用它,这会给我一个错误,说 evt if undefined ,我理解这是因为没有输入任何内容,为什么它调用它?我怎样才能绑定(bind)它而不需要调用它?

最佳答案

尝试

$("#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">

关于javascript - window.load 上单独的 javascript 文件内的引用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28790293/

相关文章:

javascript - 在 React 中通过单击切换状态值

javascript - 递归读取Node JS中的目录

javascript - 获取卡详细信息后, Stripe 未提交

javascript - 如何在构造函数中调用函数

javascript - 如何检查 jQuery UI 插件是否附加到元素?

javascript - 使用 css 和 javascript 调整 svg 动画时出错

javascript - jQuery - 等待淡入淡出完成的正确方法

javascript - 如何在 jQuery 中通过现有类添加类

javascript - 转换 jQuery addClass 和 removeClass

jquery (1.8.2) 数据选择器