Javascript - Value.replace包含1个字母

时间:2017-03-07 18:58:29

标签: javascript forms

我正在创建一个登录页面,我希望用户名只有一个数字输入,所以它会接受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

2 个答案:

答案 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功能

的第二个参数中删除空格

&#13;
&#13;
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;
&#13;
&#13;