此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)" />
答案 0 :(得分:1)
我不会在脚本中使用inline javascript而是使用add the event listener。然后,我将使用一个函数来添加跨浏览器事件侦听器(在此示例中为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);
上
答案 1 :(得分:-1)
您可以使用此jquery函数仅启用digites,points,逗号:
$('input').keydown(function(event) {
// Allow: backspace, delete, tab, escape, and enter
if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 || event.keyCode == 188 || event.keyCode == 190 ||
// Allow: Ctrl+A
(event.keyCode == 65 && (event.ctrlKey === true || event.metaKey)) ||
// Allow: home, end, left, right
(event.keyCode >= 35 && event.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
else {
// Ensure that it is a number and stop the keypress
if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
event.preventDefault();
}
}
答案 2 :(得分:-1)
您需要将onkeypress
换成onkeydown
,以便正确取消活动。
<input type="text" onkeydown="return AllowOnlyDigit(event)" />