Ответ 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>
В 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" />
Некоторые элементы 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
, вы увидите, что если имеется так называемый val-hook, если val -hook возвращает число, это число будет возвращено как-из функции val. Я нашел это обсуждение, в котором говорится, что val-hooks в основном используются плагинами для создания настраиваемых элементов управления, таких как ползунки и т.д., Где "естественный" возвращаемое значение val
может быть целым числом. Надеюсь, это проливает немного света на ваш вопрос.
Вы можете просто создать плагин jquery для использования вместо val(), который бы делал это. Здесь я создаю функцию nval() для использования вместо val() при получении значения элементов.
$.fn.nval = function() {
return Number(this.val())
};
Затем в вашем коде просто используйте следующее, чтобы получить значение в виде числа
$('#elementID').nval()
Другой способ заключается в добавлении оператора плюс на передней панели
var num = + $ ('# gdoron'). val();
Хм. Для всего этого в консоли 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())
.