val
- docs にこの説明を書きました:
.val()戻り値:文字列、数値、配列
Number
を取得しようとしましたが、string
のみを返すようです。間違っていることはありますか?
$('#gdoron').val('1');
alert($('#gdoron').val() === '1'); // true
alert(typeof $('#gdoron').val()); // string.
$('#gdoron').val(1);
alert($('#gdoron').val() === 1); // false
alert(typeof $('#gdoron').val()); // string (not "number"!)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="gdoron" />
私の質問は次のとおりです。どのようにval()
はドキュメントが言うように番号を返すことができますか?.
一部のHTML5要素(例:進捗;
alert(typeof $("#prog").val()); // number
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<progress value="50" max="100" id="prog"></progress>
テキスト入力のvalue
属性は常に文字列を返します。整数を取得するには、値をparseInt
する必要があります。
parseInt($('#myInput').val(), 10);
ちょっと覗いてみましたが、答えがあると思います。 val
function の実装を見ると、いわゆるval-hookが設定されている場合、val-hookが数値を返す場合、その数値はval関数からそのまま返されます。 この説明 は、val-hooksが主にプラグインによって使用され、スライダーなどのカスタムコントロールを作成することを示唆しています。val
の「自然な」戻り値は整数。これがあなたの質問に少し光を当てることを願っています。
これを行うval()の代わりに使用するjqueryプラグインを単純に作成できます。ここでは、要素値を取得するときにval()の代わりに使用する関数nval()を作成します。
$.fn.nval = function() {
return Number(this.val())
};
次に、コードで次を使用して値を数値として取得します
$('#elementID').nval()
うーんコンソールのこれらすべてについて、jQuery $($0).val()
およびJavascriptの_$0.value
_は文字列「3」を返します。
_<input type='number' value='3'/>
<input type='text' value='3'/>
<input type='radio' value='3'/>
<input type='checkbox' value='3'/>
_
jQuery val()のドキュメント はもっと明確になると思います。数値がどのように返されるかわかりませんので、parseInt($($0).val())
またはparseFloat($($0).val())
を使用することをお勧めします。