0

検証する関数があります(整数と浮動小数のみを受け入れます)

function isNumeric(prodFilterValue)
{
    if((parseFloat(prodFilterValue) == parseInt(prodFilterValue)) && !isNaN(prodFilterValue))
    {
        alert('numeric');       
        alert('hahahahhahaha');
        $("#valuetxt1").css('background-color', 'white');           

    }
    else
    {
        alert('HIIIIIIIIIII');
        $("#valuetxt1").css('background-color', 'grey');
    }

    return prodFilterValue;
}

問題は今です.. 0.1を検証すると、数値ではないと言われます..数値であると仮定します..別の条件を入力すると

if((parseFloat(prodFilterValue) == parseInt(prodFilterValue)) && !isNaN(prodFilterValue) || (prodFilterValue % 1 !=0))

1A を数値として検証します

4

3 に答える 3

2

それが数値であるかどうかを確認すると、浮動小数点数または整数になります。

function checkNumber(numb1)
{
  numb1 += "";   // to handle boolean when true / false is passed
  if(numb1.length == 0) return false; // to handle empty string like checkNumber("")

  if(isNaN(numb1))
      alert("It is a number");
  else
      alert("It is not a number");
}
于 2012-05-04T09:27:42.820 に答える
2

数値変換を使用して確認します。

 !isNaN(Number([value]));
 // e.g.
 isNumber = !isNaN(Number('.3421')); //=> true
 isNumber = !isNaN(Number('nonumber.3421')); //=> false
 isNumber = !isNaN(Number('1500032')); //=> true
 // you can also just use the conversion 
 isNumber = Number('.3421'); //=> 0.3421
 isNumber = Number('nonumer.3421'); //=> NaN
 if (!isNumber) { /*...*/ }
 // a hidden goodie: Number automatically trims the parameter
 isNumber = Number('    .3421 ');   //=> 0.3421
 isNumber = Number('    .3421 \n'); //=> 0.3421

あなたの機能に適用されます:

function isNumeric(prodFilterValue,thousandsDelim) {
  prodFilterValue = Number(prodFilterValue);
  return prodFilterValue 
            ? (alert('yeah!'), prodFilterValue) 
            : (alert('no sir'), false);
}

さらにisNaN([value])、暗黙の Number 変換を[value]に適用するので、それも使用できます。

Number('')Number(null)またはNumber('\t\n ')すべてが 0 に 評価され、1 に評価されることに注意してくださいNumber(true)。したがって、完全にするには、追加のチェックを行う必要があります。何かのようなもの:

function isNumeric(prodFilterValue) {
    prodFilterValue = prodFilterValue && 
                      /stri/i.test(typeof prodFilterValue) && 
                      prodFilterValue.replace(/^\s+|\s+$/,'').length 
                       ? Number(prodFilterValue) 
                       : undefined;
    return prodFilterValue && prodFilterValue !== 0
            ? (alert('yeah!'), prodFilterValue) 
            : (alert('no sir'), false);
}
于 2012-05-04T09:09:41.543 に答える
0

これは、parseIntandparseFloatが数字の後の文字を破棄4Kし、 として解析するため4です。追加の条件を追加します:isFinite(prodFilterValue)そして、それはそれらのケースを処理する必要があります。

parseIntparseFloat最初の文字を数値に変換できない場合にのみ NaN を返します。

parseIntただし、 16 進数のような値も処理することに注意してください。

parseInt("0xF"); // 15
于 2012-05-04T09:14:04.287 に答える