本当によくわからない。。。
$(function() { var test = '2222'; try { // true alert($.isNumeric(test)); } catch(e) { alert(e); } }); $(function() { // 間に文字を入れてみる var test = '22e22'; try { // true !!? alert($.isNumeric(test)); } catch(e) { alert(e); } }); $(function() { // もうちょっと入れてみる var test = '22ea22'; try { // false !!? alert($.isNumeric(test)); } catch(e) { alert(e); } });
まじで良くわからない。
公式を確認するとどうやら、数字だけではないようです。
$.isNumeric("-10"); // true(数値をクォートで囲んだもの)
$.isNumeric(0xFF); // true(16進数)
$.isNumeric("0xFF"); // true(16進数をクォートで囲んだもの)
$.isNumeric("8e5"); // true(指数表記をクォートで囲んだもの)
$.isNumeric(0144); // true(8進数)
$.isNumeric(Infinity); // false(無限大は数値とは見なされない)
$.isNumeric(NaN); // false
$.isNumeric(null); // false
$.isNumeric(true); // false
$.isNumeric(undefined); // false
私は、
$.isNumeric("8e5"); // true(指数表記をクォートで囲んだもの)
に、悩まされたもよう。
この関数は使わないことにした。
色々調べたけど、めんどくせーので慣れている正規表現を使う
// チェックする文字列を読み込み var val = $(this).val(); // 数字、全角数字以外にマッチ val.match(/[^\d0-9]/g); // // 全角数値が存在する場合 val.match(/[^0-9]/g);
これでよし