Не могли бы вы взглянуть на This Demo и сообщить мне, почему эта ошибка происходит во время проверки двух типов входных параметров?Ошибка при использовании булева с простой проверкой
Технически, что происходит, если пользователь не выбирает ни один из флажков и не выбирает параметры и не нажимает кнопку отправки, появляется сообщение об ошибке, а validRequest
boolean остается в false
. Теперь, если пользователь только выбрать флажки ситуации является равно validRequest
булевым является false
и сообщение об ошибке появляется НО если пользователь забудет выбрать флажки и только выбирает из списка validateQuery()
проверяет validRequest
в True
и то теперь сообщении об ошибке и появляется предупреждающее сообщение!
Не могли бы вы сообщить мне, почему это происходит?
$(function() {
var validRequest = false;
function validateQuery() {
var selectedDoll = $('input:checkbox[name=doll]');
if ($(selectedDoll).is(':checked')) {
validRequest = true;
$('#err').html('');
} else {
validRequest = false;
$('#err').html('Some Thing Wrong!');
}
var selectedIcecream = $("#icecream").val();
if (selectedIcecream == 0) {
validRequest = false;
$('#err').html('Some Thing Wrong!');
} else {
validRequest = true;
$('#err').html('');
}
}
$("#isValid").on("click", function() {
validateQuery();
if(validRequest){ alert('Ready To Go');}
console.log(validRequest);
});
});
#err{color:red;}
<div>
<input type="checkbox" name="doll" value="cat" />Cats
<br />
<input type="checkbox" name="doll" value="dog" />Dogs
<br />
<input type="checkbox" name="doll" value="bird" />Birds
<br />
<br />
<select id="icecream">
<option value="0">Select From List</option>
<option value="chocolate">Chocolate</option>
<option value="vanilla">Vanilla</option>
<option value="strawberry">Strawberry</option>
<option value="caramel">Caramel</option>
</select>
</div>
<p>
<input type="submit" id="isValid" value="Submit now" />
</p>
<p>
<div id="err"></div>
</p>
у вас есть два независимых условия и единый флаг, но хотят проверки только если оба истинны. Вам нужно либо реструктурировать все, чтобы быть вложенным (или составным) состоянием, либо иметь два отдельных флага, а затем проверить истинность обоих. Вы можете сделать это с помощью двух отдельных переменных, массива (а затем подсчета длины) или приращения 'validRequest' и проверьте, что это> = 0. Просто зависит от того, как вы хотите показать ошибки –