1
$('#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();
        }
});

文字が渡されたときにも数字が渡された場合でも、常に true に解決される理由がわかりません。

4

6 に答える 6

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');   
}
于 2013-10-10T04:11:10.580 に答える
0

私には良い正規表現の状況のように見えます。

if(stri.match(/^[0-9]*$/)){
    alert("numeric!");
    // do whatever else...
}

$.isNumeric は、0xFFやのようなクレイジーな半数値を許可します2e5

于 2013-10-10T04:11:16.737 に答える