JQuery.val не работает на вводе диапазона?

<input type="range" value="5,17" />

Если я попытаюсь изменить значение с помощью $('input').val('8,20');, он не изменится...

Но на скрытые входы работает: <input type="hidden" value="s" />

Ответ 1

HTML5 <input type="range" /> обрабатывает только одно значение между атрибутами min и max - например:

<input type="range" min="1" max="10" value="5.3" step="0.1" />

$("input[type=range]").val(); // returns 5.3
$("input[type=range]").val(6); // sets value to 6
$("input[type=range]").val(); // returns 6

Если вы хотите, чтобы маркер слайда был минимальным и максимальным значением в одном пользовательском интерфейсе, вы могли бы использовать слайдер jQueryUI: https://jqueryui.com/slider/#range

Ответ 2

Я попытался настроить скрипку, и это сработало без проблем.

http://jsfiddle.net/Z2B7Y/

Имейте в виду, что value представляет числовое значение, которое находится между атрибутами min и max. Пытаясь установить его на 8,20, он недействителен, поскольку он не является допустимым числом и поэтому не имеет смысла.

Если вы хотите установить значение с плавающей запятой, вы должны использовать точку, например

$('input').val('8.20');

Если вы хотите установить вместо этого границы диапазона, вы должны изменить свойства, например.

$('input').prop('min','8');
$('input').prop('max','20');

Надеюсь, что это поможет.