我有以下功能,只允许在文本框中输入数字字符。它位于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,我理解因为没有输入,为什么要调用它?我怎么才能绑定它而不必调用它?
答案 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)
您可以查看以下内容:
$(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;
}
});