2 回答

TA貢獻(xiàn)1811條經(jīng)驗 獲得超6個贊
看起來罪魁禍?zhǔn)资悄噲D訪問Firstname該document對象。
我用更標(biāo)準(zhǔn)的document.getElementById()方法和它的工作替換了它。
一些閱讀:Do DOM tree elements with ids become global variables?
function validate() {
var invalid = false;
if(!document.getElementById('Firstname').value.length) {
invalid = true;
}
if(invalid) {
document.getElementById("form-error").style.display = "inline-block";
return false;
}
return true;
}
#form-error {
display: none;
}
<form id="NewPatientForm" method="post" action="#" onsubmit="return validate()">
<div class="form-element">
<p id="form-error">All fields are required</p>
</div>
<div>
<label for="Firstname">First Name
<input type="text" name="Firstname" placeholder="First Name" id="Firstname">
</label>
</div>
<div>
<input type="submit" name="submit-button" value="Submit">
</div>
</form>

TA貢獻(xiàn)1853條經(jīng)驗 獲得超6個贊
有幾個錯別字,我也會提出其他建議。首先,代碼中的一個或三個修復(fù):
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>NewPatientForm</title>
<script>
function validate() {
const invalid = document.getElementById("Firstname").value.length == 0;
if(invalid) {
document.getElementById("form-error").style.display = "inline-block";
return false; //to make the text appear
}
return true;
}
</script>
</head>
<body>
<form id="NewPatientForm" method="post" action="#" onsubmit="return validate();">
<div class="form-element">
<p id="form-error">All fields are required</p>
</div>
<div>
<label for="Firstname">First Name
<input type="text" name="Firstname" placeholder="First Name" id="Firstname">
</label>
</div>
<div>
<input type="submit" name="submit-button" value="Submit">
</div>
</form>
</body>
</html>
我的建議是您還可以查看內(nèi)置的 HTML 表單驗證屬性。我認(rèn)為您正在重新發(fā)明輪子,例如要求非空名字。為什么不用這個而不是 JavaScript?
<input type="text" name="Firstname" id="Firstname" placeholder="First Name" required />
還有很多其他的,比如 minlength=""、min=""、step="" 等。
此外,還有一個帶有 .checkValidity() 的驗證系統(tǒng)中的 JavaScript 掛鉤,因此您可以讓內(nèi)置驗證完成繁重的工作,然后也加入更多您自己的自定義方面。
添加回答
舉報