2012-03-19 6 views
35

次のjQueryコードが動作しない理由を知る人がいますか? ユーザー入力から整数を返したいとします。parseInt with jQuery

var test = parseInt($("#testid")); 

あなた&さようならありがとうございました!

あなたは、あなたがターゲットとしている入力の valueをしたい、それを指示する必要が
+5

doesnの「定義してください'仕事はありません。'何が起こると思いますか、本当に何が起こりますか? –

答えて

104
var test = parseInt($("#testid").val(), 10); 

また、常に第2引数(基数)をparseIntに指定してください。それはあまりにも巧妙であることを試み、提供されなければそれを自動検出し、予期せぬ結果につながる可能性があります。

を入力する10は、ベース10の数字を使用することを前提としています。

+12

'parseInt'を呼び出すときは常に基数を指定してください。 –

+0

parseIntの互換性はどうですか? –

4
var test = parseInt($("#testid").val()); 
+2

'parseInt'を呼び出すときは常に基数を指定してください。 –

13

2つの問題:

  1. あなたはparseIntがそれにtoStringを呼び出し、バック"[object Object]"を取得するとして、あなたが望むものではありませんこれは、parseIntに要素のjQueryのラッパーを渡しています。 valまたはtextか何か(要素の種類によって異なる)を使用して、必要な文字列を取得する必要があります。

  2. parseIntは、使用すべき基数(数値ベース)を教えていないので、使用する基数がparseIntの場合には、奇妙な結果をもたらす奇妙な入力をする恐れがあります。

修正要素は、フォームフィールドの場合:

//        vvvvv-- use val to get the value 
var test = parseInt($("#testid").val(), 10); 
//         ^^^^-- tell parseInt to use decimal (base 10) 

修正要素は何か他のものであり、あなたはそれ内のテキストを使用する場合:

//        vvvvvv-- use text to get the text 
var test = parseInt($("#testid").text(), 10); 
//          ^^^^-- tell parseInt to use decimal (base 10)