您能否看看This Demo並讓我知道爲什麼在驗證兩種類型的輸入選擇期間發生此錯誤?關於使用簡單驗證使用布爾值問題
從技術上講,如果用戶沒有選擇複選框和選擇選項,並按下提交按鈕錯誤信息出現,並且validRequest
布爾值保留在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來做到這一點。只取決於你想如何顯示錯誤 –