Я использую компонент слайдера jQuery в одной из моих форм следующим образом:
<form action="survey_dis.php" method="POST" target="_self" name="apForm">
<div data-role="rangeslider">
<input type="range" name="F1" id="F1" min="0" max="100" step="5" value="" onchange='document.getElementById("bar1").value = document.getElementById("F1").value."%";'>
<input type="text" name="bar1" id="bar1" value="" size="3" disabled />
</div>
(...)
</form>
Как вы заметили, в допустимом диапазоне должен указываться процент, поэтому допустимые значения должны быть в диапазоне от 0 до 100. Поскольку проверка пустого ($ var) вернет TRUE даже для «0», я установил «значение» по умолчанию с пустой строки…
Теперь в моем php-скрипте мне нужно проверить, выбрал ли пользователь значение, а не сохранять его по умолчанию:
for ($i=1; $i<51; $i++){ // 51 questions
if (isset($_POST["F$i"]) && strlen($_POST["F$i"]) && ($_POST["F$i"]<>'-1') ){
$F_var = $_POST["F$i"];
} else {
print "Question # $i missing";
$missing_fields += 1;
}
}
Тем не менее, он всегда выглядит как php, как будто сделан выбор ползунка, и условие «else» никогда не применяется … даже если я по умолчанию «value» с «0».
Прежде всего, у вас есть синтаксическая ошибка в вашем onchange
, Ваш %
соединяется с .
вместо +
document.getElementById("F1").value + "%";'
Почему значение 0 возвращает истину?
Вы проверяете длину строки, которая равна 1, даже для 0
, Другие два условия, конечно, также верны, так как 0 != -1
и данный параметр установлен.
Вы могли бы отправить bar
вместо полей и отметьте их, поскольку они по умолчанию пусты. Замечания: сделать это поле нельзя disabled
как это никогда не будет отправлено в этом случае. Вы можете установить его на readonly
например.
Подсказка: Вы начинаете свой цикл в $i=1
, Так что ваш последний вопрос никогда не будет проверен, так как вы перестанете зацикливаться на $i<51
вместо $i<=51
Других решений пока нет …