1
希望,你們一切都很好。表單驗證錯誤信息在JavaScript中覆蓋(僅)
我想驗證JavaScript的名字輸入字段的表單。出於某種原因,錯誤消息不會按順序顯示。其中一些覆蓋其他人,只顯示一個錯誤消息,其餘的不是。
我想知道爲什麼?任何人都可以請我點亮一下嗎?
這裏是我的代碼:
// Predefined validator function to check if input is empty or not
var validator = {};
validator.isEmpty = function(input) {
// Stop execution if input isn't string
if (typeof input !== 'string') return false;
if (input.length !== 0) {
for (var i = 0; i < input.length; i++) {
if (input[i] !== " ") {
return false;
}
return true;
}
}
return true;
};
validator.isEmpty(null); // returns false
// Main part to get inputs and apply validation
window.onload = function() {
var signUp = document.getElementById("signUp");
var fName = document.getElementById("fName");
var suButton = document.getElementById("subMit");
// Submit button on the function
suButton.addEventListener('click', function(event) {
isNameValid(fName);
});
signUp.addEventListener('submit', function(event) {
event.preventDefault();
});
function isNameValid(char) {
var val = char.value;
if (validator.isEmpty(val)) {
if (val.length < 2) {
// Display a message if input length is less than 2
char.setCustomValidity("We expect your input should contain at least 2 characters, darling !");
char.style.borderColor = "red";
}
if(!isNaN(val)) {
char.setCustomValidity("Please, enter only characters");
char.style.borderColor = "red";
}
} else {
char.setCustomValidity("");
char.style.borderColor = "green";
}
}
<form id="signUp">
<input type="text" id="fName" name="firstname" placeholder="First name">
<input type="checkbox" name="result" required autofocus> Agree our conditions
<input type="submit" id='subMit' value="SUBMIT">
</form>
無法複製,可以請你告訴步驟來複制 – brk
@Tiyor你調試你的代碼?如果沒有,請嘗試從[此回答](https://stackoverflow.com/a/19623573/1575353)或其後的信息 –
您的狀況中有邏輯錯誤。你已經把一個條件,如果(validator.isEmpty(val)),但你試圖檢查它是否有相同的條件內的長度超過2。這就是說,如果你在輸入框中有任何字符,它將不會進入上面的if條件,並且會一直到其他部分。 – Bharat