У меня есть форма с несколькими выпадающими списками, и я хочу убедиться, что по крайней мере у одного значение по умолчанию '0' изменилось на что-то другое.Тем не менее, я не могу придумать, как это сделать.Я пробовал оба .each () и оператор while, и ни один из них не ведет себя так, как я ожидал.
Вот HTML-код:
<form>
<label>Qty:</label>
<select class="Qty">
<option selected="selected">0</option>
<option>1</option>
</select>
<br />
<label>Qty:</label>
<select class="Qty">
<option selected="selected">0</option>
<option>1</option>
</select>
<br />
<br />
<label>Qty:</label>
<select class="Qty">
<option selected="selected">0</option>
<option>1</option>
</select>
<br />
<a href="#">test</a>
</form>
, а вот оператор while:
$(document).ready(function(){
$('a').click(function(e){
e.preventDefault();
while ($('select > option:selected').val()==0){
alert('hello');
}
});
Если все селекторы не установлены на что-то отличное от 0, он застревает в цикле, где он продолжает тестировать селекторы (таким образом, появляется приветственное предупреждение).
Iпопробовал также и все.
$('a').click(function(e){
e.preventDefault();
$('select > option:selected').each(function (i) {
if($(this).val()>0) {
alert('okay to proceed');
} else {
alert('nothing found');
}
});
});
Это немного лучше, но он продолжает проверять даже после того, как нашел верный ответ.Поэтому, если я попытаюсь вызвать сообщение об ошибке, он скажет, что все в порядке, но затем все равно вызовет сообщение об ошибке.Я также попытался установить переменную для, если она действительна или нет, но она продолжает отображаться как ложная:
$('a').click(function(e){
e.preventDefault();
var valid = false;
$('select > option:selected').each(function (i) {
if($(this).val()>0) {
var valid= true;
alert(valid);
}
});
if(valid==true) {
alert(valid);
alert('it works');
} else {
alert(valid);
alert('uh-oh');
}
});
Я явно что-то упускаю.Любая помощь по этому вопросу будет принята с благодарностью.