我有两个文本框(输入字段),如下所示:
<input type="text" class="txtmin" placeholder="Minimum price">
<input type="text" class="txtmax" placeholder="Maximum price">
我尝试使用这样的方法来阻止用户输入以下值:
如果用户没有在这两个值中输入任何内容,他可以继续。
如果用户在txtmin文本框中输入了某些内容,但未在txt max中输入任何内容,则只能对txtmin进行验证
喜欢2,反之亦然
以下基础进行2和3验证:
例如,当我输入:1或2.50或1.00时,这是可以的......
不允许使用逗号的数字。
所以我尝试过如下:
$(".btnGo").click(function () {
var r = new RegExp("/^[+-]?\d+(\.\d+)?$/");
var min = $('.txtmin').val();
var max =$('.txtmax').val();
if ($('.txtSearch').val() == "") {
ShowMessage("All fields are required");
return;
} else if ($('.txtmin').val() != "") {
if (!r.test(min)) {
ShowMessage("Entry only number for minimum price!");
return;
}
}
else {
PostAndUpdate($('.txtSearch').val(), $('input[name=type]:checked').val(), $('input[name=shipping]:checked').val(), $('input[name=condition]:checked').val(), $('.txtmin').val(), $('.txtmax').val());
}
});
但是,例如,当我不离开txtmin值为空时,我输入:
1.25 <&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;
我仍然因某种原因得到错误???
Entry only number for minimum price
我在这里做错了什么?
答案 0 :(得分:1)
从你的正则表达式中取出引号。
var r = new RegExp(/^[+-]?\d+(\.\d+)?$/);
跟进:您可以声明由/.../
或引号分隔的正则表达式,但不能同时声明两者。如果使用引号,则需要遵循常规的javascript转义规则并使用双反斜杠。如果使用斜杠分隔,您也不需要使用new RegExp
。这些都是有效的和等效的。
var r = new RegExp(/^[+-]?\d+(\.\d+)?$/);
var r = new RegExp("^[+-]?\\d+(\\.\\d+)?$");
var r = /^[+-]?\d+(\.\d+)?$/;
不,这不会允许带逗号的数字。