$('#empcontact').blur(function(){
var stri = $('#empcontact').val();//the input element
var numbers = "0123456789";
var flag = false;
for(var x=0;x<stri.length;x++){
var ch = stri.charAt(x);
var n = numbers.indexOf(ch);
if(n === -1){//why does it always resolve to true
flag = true;
break;
}
else{
}
}
if(flag){
alert("Not a number");
$('#empcontact').val(" ");
$('#empcontact').focus();
}
});
我不知道为什么即使在传递字符时传递数字也总是解析为真。
答案 0 :(得分:7)
您可以使用$.isNumeric(),例如:
var stri = $('#empcontact').val();
console.log( $.isNumeric( stri ) ); //returns true if is number
或
var stri = $('#empcontact').val();
console.log(typeof stri === 'number' && isFinite(stri) ); //returns true if number
或仅整数
var intsOnly = /^\d+$/,
stri = $('#empcontact').val();
if(intsOnly.test(stri)) {
alert('its valid');
}
答案 1 :(得分:1)
javascript解决方案
if(isNaN(parseInt('a'))){ // replace 'a' with your variable
flag = true;
break;
}
答案 2 :(得分:1)
您可以通过以下方式检查号码:
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
OR
function isNumber(n){
return (parseFloat(n) == n);
}
因为IsNumeric
在以下情况下会失败:
IsNumeric(' ') == true;
IsNumeric('\t\t') == true;
IsNumeric('\n\r') == true;
IsNumeric(-1) == false;
IsNumeric(0) == false;
IsNumeric(1.1) == false;
IsNumeric(8e5) == false;
或者如果您想使用Regexp,可以使用许多Regexp:
/^[0-9]+$/
/^\d*$/
[0-9]+(\.[0-9][0-9]?)?
答案 3 :(得分:0)
对我来说看起来是一个很好的正则表达式,使用:
if(stri.match(/^[0-9]*$/)){
alert("numeric!");
// do whatever else...
}
$ .isNumeric将允许疯狂的半数字内容,例如0xFF
和2e5
。
答案 4 :(得分:0)
尝试使用Number Validation Plugin作为jQuery的插件,用于执行HTML输入数字类型的验证。
答案 5 :(得分:0)
号码验证
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode;
if (charCode != 46 && charCode != 99 && charCode != 118 && charCode > 31
&& (charCode < 48 || charCode > 57))
return false;
return true;
}