我正在创建一个登录页面,我希望用户名只有一个数字输入,所以它会接受1000但如果我输入1000t并尝试提交表单,它应该拒绝它。
我尝试使用不同的方法并且不允许用户输入字母,但是当我使用我的代码时,它允许我出于某种原因键入最多1个字符。即我可以输入1000t而不是1000ttt。如果我尝试键入1000t后跟一个“f”,它将用f替换t,所以生病得到1000f。但我只想要数字出现
我的剧本:
<script>
function validate(evt){
evt.value = evt.value.replace(/[^0-9]/g,"");
}
</script>
我的表格:
<form action="customer_login.jsp" method="POST">
Customer Number: <input type="text" name="username" onkeypress="validate(username)" />
<br />
Password: <input type="text" name="password" />
<br />
<input type="submit" value="Login" />
</form>
编辑:我也注意到如果我输入1001a并按Tab键,它会删除a,但是如果我点击密码框就会保留a
答案 0 :(得分:0)
您可以使用<input type="number">
。然而,这将包括负数,浮点数和特殊数字(10e4
等)。
如果您想要一个正则表达式,可以使用this
将该元素传递给JavaScript函数。然后,用修改后的新值替换元素的值。您的问题发生了,因为您使用了onkeypress
。按键时会立即触发此事件。只有在释放钥匙后才会添加实际的字母。因此,您需要使用onkeyup
代替。这是一个片段:
function validate(element) {
element.value = element.value.replace(/[^0-9]/g, '');
}
<form action="customer_login.jsp" method="POST">
Customer Number: <input type="text" name="username" onkeyup="validate(this)" />
<br />
Password: <input type="text" name="password" />
<br />
<input type="submit" value="Login" />
</form>
答案 1 :(得分:0)
使用onkeyup
代替onkeypress
并从replace
功能
function validate(evt){
evt.value = evt.value.replace(/[^0-9]/g,"");
}
&#13;
<form action="login.php" method="POST">
Customer Number: <input type="text" id="username" name="username" onkeyup="validate(username)" />
<br />
Password: <input type="text" name="password" />
<br />
<input type="submit" value="Login" />
</form>
&#13;