Как val () может вернуть Number? - PullRequest
       10

Как val () может вернуть Number?

53 голосов
/ 10 февраля 2012

В val документах написано это описание:

.val () Возвращает: String, Number, Array

Я пыталсячтобы получить 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() вернуть номер, как написано в документах? Вопрос не в том, как я могу разобратьстрока.

Ответы [ 5 ]

64 голосов
/ 10 февраля 2012

Атрибут value ввода текста всегда будет возвращать строку. Вам нужно parseInt значение, чтобы получить целое число:

parseInt($('#myInput').val(), 10);
25 голосов
/ 10 февраля 2012

Некоторые элементы HTML5, например, progress;

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>
15 голосов
/ 10 февраля 2012

Я немного заглянул, и думаю, у меня есть ответ. Если вы посмотрите на реализацию функции val , вы увидите, что если имеется так называемый val-hook, если val-hook возвращает число, это число будет возвращено как это из функции val. Я нашел это обсуждение , которое предполагает, что val-hooks в основном используются плагинами для создания пользовательских элементов управления, таких как ползунки и т. Д., Где "естественное" возвращаемое значение val может быть целым числом. Надеюсь, это проливает немного света на ваш вопрос.

1 голос
/ 31 января 2018

Вы можете просто создать плагин jquery для использования вместо val (), который бы делал это.Здесь я создаю функцию nval () для использования вместо val () при извлечении значения элемента.

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

Затем в вашем коде просто используйте следующее, чтобы получить значение в виде числа

$('#elementID').nval()
0 голосов
/ 04 июля 2019

Хм. Для всего этого в консоли 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()).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...