对于我的HTML,我试图验证带有邮政编码输入的表单。
但此输入无效(或未被识别)。对于我的邮政编码输入,我希望文本框只接受数字。
邮政编码输入:
var Postcode = document.forms["Rego"]["postcode"].value;
var e = Postcode;
var code = e.keyCode;
if (code > 47 && code < 58) || code == 40 || code == 41 || code == 43) {
return true;
}
alert("Invalid Postcode. Please enter numbers only.");
return false;
我做错了什么?
答案 0 :(得分:1)
要仅接受数字,您可以使用(对于HTML5):
<input type="number" name="whatever">
另外,如果你想用js验证它(不推荐在浏览器中这样做,因为任何人都可以修改你的js文件并将内容推送到服务器)或服务器代码,这里有一些见解:
尝试将传递给服务器的字符串转换为数字。例如,在python中,您可以执行:int(whatever)
。如果转换失败,则表示字符串不是数字。
希望有所帮助:)
答案 1 :(得分:1)
在你的情况下,如果在第4行之后,为什么你关闭了??? ???
答案 2 :(得分:1)
你做错了很多事。您没有设置事件处理程序,实际上是绑定到输入框中的值。您必须首先获取表示文本框的DOM元素,然后将事件处理程序绑定到DOM元素。试试这个:
var Postcode = document.getElementById('post');
Postcode.onclick = function(e) {
console.log(e);
var code = e.keyCode;
if (code > 47 && code < 58 || code == 40 || code == 41 || code == 43) {
return true;
}
alert("Invalid Postcode. Please enter numbers only.");
e.preventDefault()
return false;
}
答案 3 :(得分:0)
如果您使用HTML5,则可以自动设置。
<input type="number" name="quantity" min="47" max="58">
答案 4 :(得分:0)
使用下面的代码textbox / inputbox只允许数值
$j('#inputbox_id').keydown(function (e) {
if (e.shiftKey || e.ctrlKey || e.altKey) {
e.preventDefault();
} else {
var key = e.keyCode;
if (!((key == 8) || (key == 46) || (key >= 35 && key <= 40) || (key >= 48 && key <= 57) || (key >= 96 && key <= 105))) {
e.preventDefault();
}
}
});
如果要设置文本框/输入框的长度,请设置“maxlength = 5”
答案 5 :(得分:0)
我想我发现你做错了什么:
您正在从输入类型中读取邮政编码值,然后比较其键码。
但是,它可能仅在您的输入具有单个数字时才有效,并且当您在其中键入更多字符时,您的邮政编码变量会变为某些内容,例如5436,然后当您使用键码函数时,它将无法按预期工作。