Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何验证十进制值输入?_Javascript_Jquery_Validation - Fatal编程技术网

Javascript 如何验证十进制值输入?

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代码的

当前仅处理十进制值,其中用户在文本字段中仅输入十进制值。应该只接受10个数字,例如,如果用户输入12345.000000,它应该会收到一个警报,显示数字字段格式错误。请使用正确的格式重新输入。(6.3)

使用我当前的jquery代码,它将接受十进制值

$("#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'
,因此输入框中的值无关紧要。