我试图让我的登录表单只验证是否只输入了数字。如果输入只是数字,我可以工作,但是当我在数字后键入任何字符时,它仍然会验证等.12akf将起作用。凌晨1点就行了。我怎么能超越这个?
登录的一部分
<form name="myForm">
<label for="firstname">Age: </label>
<input name="num" type="text" id="username" size="1">
<input type="submit" value="Login" onclick="return validateForm()">
function validateForm()
{
var z = document.forms["myForm"]["num"].value;
if(!z.match(/^\d+/))
{
alert("Please only enter numeric characters only for your Age! (Allowed input:0-9)")
}
}
答案 0 :(得分:32)
与/^\d+$/
匹配。 $
表示“行尾”,因此在初始运行数字后的任何非数字字符都会导致匹配失败。
修改强>
RobG明智地建议更简洁/\D/.test(z)
。此操作测试您想要的反转。如果输入具有任何非数字字符,则返回true
。
只需省略否定!
并使用if(/\D/.test(z))
。
答案 1 :(得分:20)
这里是如何验证输入只接受数字,这将接受数字,如123123123.41212313
<input type="text"
onkeypress="if ( isNaN(this.value + String.fromCharCode(event.keyCode) )) return false;"
/>
并且这不接受输入点(。),因此它只接受整数
<input type="text"
onkeypress="if ( isNaN( String.fromCharCode(event.keyCode) )) return false;"
/>
这样你就不会允许用户输入任何数字
答案 2 :(得分:7)
这个对我有用:
function validateForm(){
var z = document.forms["myForm"]["num"].value;
if(!/^[0-9]+$/.test(z)){
alert("Please only enter numeric characters only for your Age! (Allowed input:0-9)")
}
}
答案 3 :(得分:4)
迟到的答案,但可能会帮助某人
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
使用就像
nn=document.forms["myForm"]["num"].value;
ans=isNumber(nn);
if(ans)
{
//only numbers
}
这个ans是从这里发现的,投票很多
答案 4 :(得分:2)
正则表达式很棒,但为什么不尝试使用它来确定它是一个数字呢?
function addemup() {
var n1 = document.getElementById("num1");
var n2 = document.getElementById("num2");
sum = Number(n1.value) + Number(n2.value);
if(Number(sum)) {
alert(sum);
} else {
alert("Numbers only, please!");
};
};
答案 5 :(得分:2)
最简单的解决方案。
感谢我的合作伙伴给了我这个答案。
您可以在输入文本框中设置 onkeypress 事件,如下所示:
onkeypress="validate(event)"
然后使用这样的正则表达式:
function validate(evt){
evt.value = evt.value.replace(/[^0-9]/g,"");
}
它将扫描并删除与该字段中的数字不同的任何字母或符号。
答案 6 :(得分:1)
function ValidateNumberOnly()
{
if ((event.keyCode < 48 || event.keyCode > 57))
{
event.returnValue = false;
}
}
此功能仅允许文本字段中的数字。
答案 7 :(得分:1)
不需要数字输入限制的长代码只需尝试此代码。
它也接受有效的int&amp;浮动两个值。
onload =function(){
var ele = document.querySelectorAll('.number-only')[0];
ele.onkeypress = function(e) {
if(isNaN(this.value+""+String.fromCharCode(e.charCode)))
return false;
}
ele.onpaste = function(e){
e.preventDefault();
}
}
<p> Input box that accepts only valid int and float values.</p>
<input class="number-only" type=text />
$(function(){
$('.number-only').keypress(function(e) {
if(isNaN(this.value+""+String.fromCharCode(e.charCode))) return false;
})
.on("cut copy paste",function(e){
e.preventDefault();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p> Input box that accepts only valid int and float values.</p>
<input class="number-only" type=text />
上述答案适用于大多数常见用例 - 将输入验证为数字。
但是允许很少的特殊情况 负数&amp;向用户显示无效的击键 删除它,以下是此类特殊用例的代码段。
$(function(){
$('.number-only').keyup(function(e) {
if(this.value!='-')
while(isNaN(this.value))
this.value = this.value.split('').reverse().join('').replace(/[\D]/i,'')
.split('').reverse().join('');
})
.on("cut copy paste",function(e){
e.preventDefault();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p> Input box that accepts only valid int and float values.</p>
<input class="number-only" type=text />
答案 8 :(得分:1)
var elem = document.getElementsByClassName("number-validation"); //use the CLASS in your input field.
for (i = 0; i < elem.length; i++) {
elem[i].addEventListener('keypress', function(event){
var keys = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 0];
var validIndex = keys.indexOf(event.charCode);
if(validIndex == -1){
event.preventDefault();
}
});
}
答案 9 :(得分:1)
我认为我们不接受长结构编程,我们将在每次射击代码中添加以下答案。
<input type="text" oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');" >
答案 10 :(得分:1)
function validateNumber(e) {
const pattern = /^[0-9]$/;
return pattern.test(e.key )
}
<input name="username" id="username" onkeypress="return validateNumber(event)">
这种方法不会锁定数字锁数字,箭头,主页,结束按钮等
答案 11 :(得分:0)
使用您已有的表格:
var input = document.querySelector('form[name=myForm] #username');
input.onkeyup = function() {
var patterns = /[^0-9]/g;
var caretPos = this.selectionStart;
this.value = input.value.replace(patterns, '');
this.setSelectionRange(caretPos, caretPos);
}
这将删除密钥释放后的所有非数字。
答案 12 :(得分:0)
//我使用这个jquery它完美的工作,只需将类nosonly添加到任何应该只是数字的文本框中:
$(document).ready(function () {
$(".nosonly").keydown(function (event) {
// Allow only backspace and delete
if (event.keyCode == 46 || event.keyCode == 8) {
// let it happen, don't do anything
}
else {
// Ensure that it is a number and stop the keypress
if (event.keyCode < 48 || event.keyCode > 57) {
alert("Only Numbers Allowed"),event.preventDefault();
}
}
});
});
答案 13 :(得分:0)
如果您使用的是React,请执行以下操作:
<input
value={this.state.input}
placeholder="Enter a number"
onChange={e => this.setState({ input: e.target.value.replace(/[^0-9]/g, '') })}
/>
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.4.2/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.4.2/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.21.1/babel.min.js"></script>
<script type="text/babel">
class Demo extends React.Component {
state = {
input: '',
}
onChange = e => {
let input = e.target.value.replace(/[^0-9]/g, '');
this.setState({ input });
}
render() {
return (
<div>
<input
value={this.state.input}
placeholder="Enter a number"
onChange={this.onChange}
/>
<br />
<h1>{this.state.input}</h1>
</div>
);
}
}
ReactDOM.render(<Demo />, document.getElementById('root'));
</script>