在將代碼提交給服務器之前,我在代碼中添加了javascript表單驗證。當用戶點擊submit
時,它應該在提交之前調用javascript驗證器。如果驗證者給出正確的,那麼只有它應該提交。我好像做錯了什麼,因爲它不管提交的驗證說什麼......表單提交之前的javascript驗證
HTML:
<form id="start_form" method="post" onsubmit="return validate_form(this);">
<ul class="error">
</ul>
<label for="title" >Title: </label><input value="{{ post.title }}" type="text" name="title">
<label for="summery" >Summery/Prompt: <textarea name="summery">{{ post.summery }}</textarea>
<label for="person">Participants Emails: </label>
<ul id="people">
<li><input type="text" name="person1"></li>
<li><input type="text" name="person2"></li>
</ul>
<a href="javascript:void(0)" onclick="add_group();"><img class="img_button" width="30px" height="30px" src="{{ STATIC_URL }}Image/plus_button.png" /></a>
<a href="javascript:void(0)" onclick="remove_group();"><img class="img_button" width="30px" height="30px" src="{{ STATIC_URL }}Image/minus_button.png" /></a>
<button type="submit" class="button">Start Game</button>
<input type="hidden" id="pn" name="pn" value="2">
</form>
JavaScript函數:
function validateEmail(email) {
var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
function append_error(m) {
c = "<li>" + m + "</li>"
$('#error').appendChild(c)
}
function validate_form(form) {
var e = true
if (form.title.value == "") {
append_error("Title Required");
e = false
}
if (form.summery.value == "") {
append_error("Summery Required");
e = false
}
for (i = 0; i < Number(form.pn.value); i++){
email = $('[name="person"' + i++ + '"]').innerText
if(email == ""){
append_error("Email #" + ++i + " can not be blank")
e = false
} else if (!validateEmail(email)) {
append_error("Email #" + i++ + " is not valid")
e = false
}
}
return e;
}
檢查你的控制檯是否有錯誤 - 你的驗證方法可能會在e被退回之前崩潰 –
我會的,但是頁面在任何可以加載到控制檯之前都會重新載入...... –
1-你沒有';'在大多數你的'javascrip t'行 2-不要使用'e'作爲變量,因爲它用於'events',請更改'e'變量的名稱。 – EhsanT