我试图在我的文本框中设置一个限制,只输入数字,方法是为每个带有模式的文本框ID添加事件监听器。
$(document).ready(function() {
var numOnlyTextBoxes = 'input[id$="NumOnly"]';
$(numOnlyTextBoxes).each(function() {
alert(this.id);
this.addEventListener("input", function(e) {
var val = this.value,
rx = /[^\d]/g;
if (rx.test(val)) {
var pos = this.selectionStart;
this.value = val.replace(rx, "");
this.selectionStart = pos;
this.selectionEnd = pos - 1;
}
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<INPUT id="firstNumOnly" TYPE="text" NAME="">
<INPUT id="secondNumOnly" TYPE="text" NAME="">
<INPUT id="thirdNumOnly" TYPE="text" NAME="">
我使用了这个addEventListener方法来确保它也在复制粘贴中得到验证。显示第一个警告框,之后还有2个警报未到来。只有当我启动IE开发人员工具时,所有文本框才能正常工作。
正如此链接Why does JavaScript only work after opening developer tools in IE once?中所指定的,我没有使用任何控制台,我也尝试将$.ajax({cache: false, ...})
放在我的代码中,但即使这样它也无法正常工作。浏览器:IE11
但是一个简单的HTML或JS小提琴工作
我收到错误,例如.addEventListener不受支持,因此我的onload函数也有以下代码
/* IE11 Fix for SP2010 */
if (typeof(UserAgentInfo) != 'undefined' && !window.addEventListener)
{
UserAgentInfo.strBrowser=1;
}