此 JAVSCRIPT 功能的目的是防止用户输入任何字母字符。如果用户输入这些字符,光标根本不会移动并停留在同一位置。但是,如果用户输入数字,光标将移动到下一个位置。
例如,在此文本字段中,我只允许用户输入数字。此方法在除 IE 8 及更早版本之外的所有浏览器中都可以正常工作。我在 Firefox、Chrome 和 Safari 甚至 Safari 模拟器上进行了测试,没有出现任何问题。如果有人指导我,甚至建议我修改我的方法,以便它在 IE 中也能正常工作,那将是很大的帮助!谢谢
function AllowOnlyDigit(e) {
var ev = e || window.event;
var key = ev.keyCode || ev.which || ev.charCode;
if (key > 31 && (key < 48 || key > 57)) {
return false;
}
return true;
}
这就是我调用此方法的方式:
<input type="text" onkeypress="return AllowOnlyDigit(event)" />
我不会使用内联 JavaScript https://stackoverflow.com/questions/5871640/why-is-using-onclick-in-html-a-bad-practice but 添加事件监听器 https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener来自脚本。然后,我将使用一个函数来允许添加跨浏览器事件侦听器(在本例中addEvent
)。我可能会做你的AllowOnlyDigit
也不同,但保持原样,然后你可以尝试这个。我没有 IE8(或任何 Windows 产品)来测试,但它应该可以工作。
HTML
<input type="text" />
JavaScript
function addEvent(elem, event, fn) {
if (typeof elem === "string") {
elem = document.getElementById(elem);
}
function listenHandler(e) {
var ret = fn.apply(this, arguments);
if (ret === false) {
e.stopPropagation();
e.preventDefault();
}
return (ret);
}
function attachHandler() {
window.event.target = window.event.srcElement;
var ret = fn.call(elem, window.event);
if (ret === false) {
window.event.returnValue = false;
window.event.cancelBubble = true;
}
return (ret);
}
if (elem.addEventListener) {
elem.addEventListener(event, listenHandler, false);
} else {
elem.attachEvent("on" + event, attachHandler);
}
}
function AllowOnlyDigit(e) {
var ev = e || window.event,
key = ev.keyCode || ev.which || ev.charCode;
if (key > 31 && (key < 48 || key > 57)) {
return false;
}
return true;
}
addEvent(document.getElementsByTagName("input")[0], "keypress", AllowOnlyDigit);
On jsfiddle http://jsfiddle.net/Xotic750/cFMS9/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)