web-dev-qa-db-ja.com

val()はどうやってNumberを返すことができますか?

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()はドキュメントが言うように番号を返すことができますか?.

54
gdoron

一部の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>
25
Alex K.

テキスト入力のvalue属性は常に文字列を返します。整数を取得するには、値をparseIntする必要があります。

parseInt($('#myInput').val(), 10);
65
osahyoun

ちょっと覗いてみましたが、答えがあると思います。 val function の実装を見ると、いわゆるval-hookが設定されている場合、val-hookが数値を返す場合、その数値はval関数からそのまま返されます。 この説明 は、val-hooksが主にプラグインによって使用され、スライダーなどのカスタムコントロールを作成することを示唆しています。valの「自然な」戻り値は整数。これがあなたの質問に少し光を当てることを願っています。

15

これを行うval()の代わりに使用するjqueryプラグインを単純に作成できます。ここでは、要素値を取得するときにval()の代わりに使用する関数nval()を作成します。

$.fn.nval = function() {
   return Number(this.val())
};

次に、コードで次を使用して値を数値として取得します

$('#elementID').nval()
1
carcus88

うーんコンソールのこれらすべてについて、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())を使用することをお勧めします。

0
MSC