我在表单中有两个文本框。一个只验证数字,另一个验证数字和逗号。
仅限第一个案例编号。
function(textBoxObject) {
var that = $(this),
val = that.val();
if (val === "" || isNaN(val)) {
that.addClass("error");
} else {
that.removeClass("error");
}
}
第二个案例编号和逗号。
如何处理另一个需要数字和逗号的文本框?是否可以在第一个函数中添加逻辑?
答案 0 :(得分:1)
我认为你认为12,34是非法的,1,234是合法的。然后是demo
function checkNumberWithComma(textBox) {
if ((textBox.value == 0 || textBox.value) && textBox.value.match(/^\d{0,3}(?:,\d{3})*$/)) {
$(textBox).removeClass("error");
}
else {
$(textBox).addClass("error");
}
}
正则表达式:
^ means start
\d{0,3} means 0-3 digits
(?: means non-capturing group
,
\d{3} means 3 digits
)
* means repeat for 0 or more times
$ means end
答案 1 :(得分:0)
您可以使用 .indexOf()方法。
类似......
if(val.indexOf(',') === -1) {
...your code here...
}
答案 2 :(得分:0)
您可以尝试使用if(val.match(/^(\d,?)*$/g))
它将允许空字符串,数字和数字用逗号分隔。但它确实允许在字符串末尾使用逗号。
因此,1,2,3,4
,1234
和1234,
都已通过,但,12,34
和foo
将失败。
答案 3 :(得分:0)
看看这个codepen,我不知道你想要的行为,但你可以尝试类似的东西。
<强> JS 强>
$(function(){
function validateInput() {
var that = $(this),
val = that.val();
if (that.attr('data-type') === 'number') {
if (val === '' || isNaN(val)) that.addClass('error');
else that.removeClass('error');
}
else {
if (val.indexOf(',') === -1) that.addClass('error');
else that.removeClass('error');
}
}
$('input').change(validateInput);
});
<强> HTML 强>
<div>
<label> Number
<input type="text" data-type="number"/>
</label>
</div>
<div>
<label> Comma
<input type="text"/>
</label>
</div>