我不知道該怎麼辦,爲什麼它不工作這是我第一次嘗試這樣的事情。問題jQuery。。提交()和變量
這裏是它的一個小提琴http://jsfiddle.net/ProjectV1/LVPtN/
你會發現在JavaScript中我有一個變種錯誤,默認爲false。
如果出現錯誤,則爲真。
我在窗體上的每個輸入旁邊都顯示了錯誤的值。
如果變量錯誤是錯誤的,它應該提交表單並且不應該爲false。
發生錯誤時出現問題,然後糾正表單不會提交。
看小提琴。該表單直接用於Google測試。
我不知道該怎麼辦,爲什麼它不工作這是我第一次嘗試這樣的事情。問題jQuery。。提交()和變量
這裏是它的一個小提琴http://jsfiddle.net/ProjectV1/LVPtN/
你會發現在JavaScript中我有一個變種錯誤,默認爲false。
如果出現錯誤,則爲真。
我在窗體上的每個輸入旁邊都顯示了錯誤的值。
如果變量錯誤是錯誤的,它應該提交表單並且不應該爲false。
發生錯誤時出現問題,然後糾正表單不會提交。
看小提琴。該表單直接用於Google測試。
我覺得,問題是error
在函數裏面會被調用模糊。當函數調用完成後,它就不確定了。這筆交易是變量應該是全球性的。你需要把這個$(document).ready()
上述這應該工作:
var error = false;
$('#joinForm input').blur(function() {
var id = $(this).attr('id');
var val = $(this).val();
if (id == 'email') {
$('#emailMsg').hide();
if (val == '') {
error = true;
$('#' + id).after('<div id="emailMsg" class="error">' + error + '</div>');
}
else {
$('#' + id).after('<div id="emailMsg" class="success">' + error + '</div>');
}
}
if (id == 'cemail') {
$('#cemailMsg').hide();
}
if (id == 'password') {
$('#passwordMsg').hide();
if (val == '') {
error = true;
$('#' + id).after('<div id="passwordMsg" class="error">' + error + '</div>');
}
else {
$('#' + id).after('<div id="passwordMsg" class="success">' + error + '</div>');
}
}
if (id == 'cpassword') {
$('#cpasswordMsg').hide();
}
if (id == 'username') {
$('#usernameMsg').hide();
if (val == '') {
error = true;
$('#' + id).after('<div id="usernameMsg" class="error">' + error + '</div>');
}
else {
$('#' + id).after('<div id="usernameMsg" class="success">' + error + '</div>');
}
}
$('#joinForm').submit(function(){
if (error == true) {
return false;
}
else {
return true;
}
});
});
試過它沒有運氣:/更新
好吧,我嘗試了你的想法後,我意識到,如果有錯誤因爲變量沒有在函數中設置,所以之前發生。所以我更新了它,以便error = false;在所有成功的狀態下,它現在可以與在函數外聲明的變量一起使用,值爲null ...感謝您的輸入。 –
根據我的說法,驗證需要被放入一個不同的函數,它返回true或false。在模糊處,調用此函數更新錯誤變量。在validate()函數中,保留一個臨時變量,該變量最初表示爲true,如果有任何錯誤,它應該繼續前進,但不允許任何其他字段驗證將其值從false更新爲true。最後返回temp變量的狀態。 –
我認爲你需要做一個關聯數組與要檢查有關錯誤輸入每一個元素。然後,在執行提交事件時,可以遍歷數組查看哪些輸入處於錯誤狀態。如果有,請阻止提交完成。 –
好的,現在試試這個,謝謝 –