我不确定问题是否与我的代码或浏览器有关,我已经尝试了所有我知道的但无法找到解决方案。
这是我的代码:
var postcode = document.getElementById("deliveryPostcode");
postcode.onkeypress = checkForDigits;
我有一个表单输入,我想阻止用户输入非数字字符。因此,只允许0-9的数字。但是,无论我在文本框中输入什么,我都会收到警报框。我正在使用firefox。
function checkForDigits(keyPressEvent) {
var keyCode = keyPressEvent.keyCode;
if (keyCode < 48 || keyCode > 57) {
alert("Not a digit");
}
}
答案 0 :(得分:2)
onkeypress有一些问题与firefox尝试onkeydown它工作正常
function checkForDigits(keyPressEvent) {
var keyCode = keyPressEvent.keyCode;
if (keyCode < 48 || keyCode > 57) {
alert(keyCode);
}
}
var postcode = document.getElementById("deliveryPostcode");
postcode.onkeydown = checkForDigits;
答案 1 :(得分:1)
var postcode = document.getElementById("deliveryPostcode");
postcode.onkeyup = checkForDigits;
function checkForDigits(keyPressEvent) {
var reg = /^\d+$/;
var val=document.getElementById('deliveryPostcode').value
if(!reg.test(val))
alert('not a digit!');
}
答案 2 :(得分:1)
在按键事件中,按下的键的Unicode值存储在 keyCode 或 charCode 属性,绝不是两者兼而有之。
<强> Source 强>
因此,针对此问题的实际跨浏览器解决方案是查看浏览器使用的keyCode
或charCode
中的哪一个并相应地阅读。
var postcode = document.getElementById("deliveryPostcode");
postcode.onkeypress = checkForDigits;
function checkForDigits(event) {
// Selects charCode or keyCode accordingly, based on which exists
var chCode = ("charCode" in event) ? event.charCode : event.keyCode;
if (chCode < 48 || chCode > 57) {
alert("Not a digit");
// return false means that letter won't be placed to input
return false;
}
}
<强> JS FIDDLE EXAMPLE 强>
因此,为了进一步阅读,我建议:keyCode property
干杯。
答案 3 :(得分:0)
我认为这与你的HTML有关。看看这个JSFiddle。它在Chrome中为我工作。
<form>
<input type="text" name="firstname" id="deliveryPostcode">
</form>
答案 4 :(得分:0)
也许你的id为“deliveryPostcode”的元素不是textarea或输入type = text?
<textarea id="deliveryPostcode">
</textarea>
这是工作示例:http://jsfiddle.net/G9Y6c/