Javascript 如何验证十进制值输入?
当前仅处理十进制值,其中用户在文本字段中仅输入十进制值。应该只接受10个数字,例如,如果用户输入12345.000000,它应该会收到一个警报,显示数字字段格式错误。请使用正确的格式重新输入。(6.3) 使用我当前的jquery代码,它将接受十进制值Javascript 如何验证十进制值输入?,javascript,jquery,validation,Javascript,Jquery,Validation,当前仅处理十进制值,其中用户在文本字段中仅输入十进制值。应该只接受10个数字,例如,如果用户输入12345.000000,它应该会收到一个警报,显示数字字段格式错误。请使用正确的格式重新输入。(6.3) 使用我当前的jquery代码,它将接受十进制值 $("#txtQty").keyup(function() { var $this = $(this); $this.val($this.val().replace(/[^\d.]/g, '')); }); 这是我的html代码的
$("#txtQty").keyup(function() {
var $this = $(this);
$this.val($this.val().replace(/[^\d.]/g, ''));
});
这是我的html代码的文本框与此html它将只允许10个字符
<input id="txtQty" type="text" maxlength="10"/>
在小数点之前,它必须接受(1-6)小数点之后的6个数字。如果输入错误,它必须只接受3个零。它应该发出一个警报,根本不工作,仍然得不到
这是同样的理由
123456.000——正确12345.000——正确
1234.000——正确
123.000——正确
12.000——正确
1.000——正确
提前谢谢
$('.ipt_Havg').focusout(function (e) {
var regexp = /\d*\.\d{3}/
if (document.getElementById("ipt_Havg").value !== regexp) {
alert("Number field format error. Please re-enter using the proper format. (6.3)");
} else {
alert('nothing wrong here');
}
});
JQuery数字格式化程序插件在您的情况下是一个很好的选择
您可以通过此检查您的输入,并验证您想要的方式 您可以使用HTML5输入编号:
<input type='number' step='0.001' max="999999.999" />
step=
设置小数位数,而max=
保证另一端。您可以在regexp中指定重复:
'123456.789'.match(/^[0-9]{6}\.[0-9]{3}$/) !== null
true
'123456.7890'.match(/^[0-9]{6}\.[0-9]{3}$/) !== null
false
1)您的if/else已损坏…
if('123456.789'.match(/^[0-9]{6}\.[0-9]{3}$/) !== null){
alert("Number field format error. Please re-enter using the proper format. (6.3)");
}else{
'123456.7890'.match(/^[0-9]{6}\.[0-9]{3}$/) !== null // <- comparison makes no sense here
}
if ($('#ipt_Havg').val().match(/\d*\.\d{3}/) !== null) {
alert('nothing wrong here');
} else {
alert("Number field format error. Please re-enter using the proper format. (6.3)");
}
2)注意:我以前认为这太明显了,甚至不值得一提,但是,您已将
'123456.789'
硬编码到条件语句中。换句话说,无论你的表单中输入了什么样的值,都不会有任何影响
'123456.789'。匹配(/^[0-9]{6}\.[0-9]{3}$/)
始终是真的
,因为'123456.789'
是此处使用的唯一值。
if('123456.789'.match(/^[0-9]{6}\.[0-9]{3}$/) !== null){
alert("Number field format error. Please re-enter using the proper format. (6.3)");
}else{
'123456.7890'.match(/^[0-9]{6}\.[0-9]{3}$/) !== null // <- comparison makes no sense here
}
if ($('#ipt_Havg').val().match(/\d*\.\d{3}/) !== null) {
alert('nothing wrong here');
} else {
alert("Number field format error. Please re-enter using the proper format. (6.3)");
}
否则,请使用字段的值
$('#ipt_Havg').val().match(/\d*\.\d{3}/) !== null
3)你的逻辑也在倒退。
if('123456.789'.match(/^[0-9]{6}\.[0-9]{3}$/) !== null){
alert("Number field format error. Please re-enter using the proper format. (6.3)");
}else{
'123456.7890'.match(/^[0-9]{6}\.[0-9]{3}$/) !== null // <- comparison makes no sense here
}
if ($('#ipt_Havg').val().match(/\d*\.\d{3}/) !== null) {
alert('nothing wrong here');
} else {
alert("Number field format error. Please re-enter using the proper format. (6.3)");
}
演示:
4)不正确的正则表达式…
if('123456.789'.match(/^[0-9]{6}\.[0-9]{3}$/) !== null){
alert("Number field format error. Please re-enter using the proper format. (6.3)");
}else{
'123456.7890'.match(/^[0-9]{6}\.[0-9]{3}$/) !== null // <- comparison makes no sense here
}
if ($('#ipt_Havg').val().match(/\d*\.\d{3}/) !== null) {
alert('nothing wrong here');
} else {
alert("Number field format error. Please re-enter using the proper format. (6.3)");
}
但是最后有一个小错误,它只能接受三个零,不超过tht,但是现在如果我输入1234.0000,它仍然接受 你的正则表达式也需要修复
^\d{1,6}\.0{3}$
演示:是否可以使用alertWell自定义reg exp?您只需将
…==空
在if块中:if(…!=null)警报('foo')
$('txtQty')。按键(函数(e){if('123456.789'.match(/^[0-9]{6}\.[0-9]{3}$/)!==null{alert('请只输入数字”)}否则{'123456 7890'.match(/^[0-9]{6}.[0-9]{3}/==null});如果我开始在文本字段中键入,这将无法正常工作我将收到警报消息如果我使用html5,我如何弹出警报消息您不必这样做,现代浏览器将为您执行此操作。如果您需要支持较旧的浏览器,则可以始终使用多边形填充。再次感谢@Sparky,事实上我正在这样尝试$('.ipt_Havg').focusout(函数(e){if('123456.789'.match(/^[0-9]{6}\.[0-9]{3}$/)!==null){alert(“数字字段格式错误。请使用正确的格式重新输入。(6.3)”;}否则{alert('此处没有错误'); } }); 每个时间编号字段格式错误。请使用正确的格式重新输入。(6.3)即使在输入正确的format@Mahadevan,则您的比较运算符有缺陷且已损坏。。。它显然永远不等于null
。把你的精力集中在这一部分。嗨@Sparky我已经更新了小提琴链接,请check@Mahadevan,当然,您知道您已经硬编码了'123456.789'
,因此输入框中的值无关紧要。但最后一个小错误是,它只能接受三个零,不超过tht,但现在如果我输入1234.0000,它仍然接受:(您肯定意识到您已经硬编码了'123456.789'
,因此输入框中的值无关紧要。