Подтвердить что ты не робот

Как val() возвращает Number?

В val docs написано это описание:

.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" />
4b9b3361

Ответ 1

Некоторые элементы 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>

Ответ 2

Атрибут текстового ввода value всегда будет возвращать строку. Для получения целого числа необходимо parseInt значение:

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

Ответ 3

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

Ответ 4

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

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

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

$('#elementID').nval()

Ответ 5

Другой способ заключается в добавлении оператора плюс на передней панели

var num = + $ ('# gdoron'). val();

Ответ 6

Хм. Для всего этого в консоли 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()) значение, поэтому я бы предложил использовать parseInt($($0).val()) или parseFloat($($0).val()).