$('#save').click(function(){
($('input[type=text]').each(function () {
if (isNaN($(this).val())) {
alert("Some of your values were not entered correctly.");
return 0;
}
});
});
我无法弄清楚为什么这不起作用。有什么建议吗?
编辑:对于误导性标题感到抱歉 - 我需要确保文本框中只包含数字。
答案 0 :(得分:2)
isNaN
函数检查名为NaN
[MDN] 的特定值,这是尝试的结果对非数字对象执行算术运算。它不检查字符串是否为数字。正则表达式怎么样?
if (!/^\d+$/.test($(this).val())) {
// Not a number...
}
以上将接受正整数。如果需要接受负数或浮点数,请将正则表达式更改为:
/^-?\d+$/ <-- Accepts positive and negative integers.
/^\d+(\.\d+)?$/ <-- Accepts positive integers and floating point numbers
/^-?\d+(\.\d+)?$/ <-- Accepts positive and negative integers and fpn.
此外,如果从each
内返回0,则会停止循环,但这不会阻止点击事件继续。您有无效数据,需要调用event.preventDefault()
来暂停点击事件。这样的事情会做:
$('#save').click(function(event){
var badInputs = $('input:text').filter(function() {
return !$(this).val().match(/^\d+$/);
};
if (badInputs.length) {
alert('Some of your values were not entered correctly.');
event.preventDefault();
}
});
答案 1 :(得分:0)
在这篇topic中有很多关于检查JS中数字的讨论。我希望它会有所帮助。