2
我使用jQuery並且阻止提交表單,然後基於ajax響應將提交表單。我發現的問題是我經常需要提交表單兩次。第一次,它顯示了加載器,但似乎沒有在ajax的成功函數中調用任何操作。如果我再次點擊它,它會提交(如果它已被驗證)。在我經歷這個之後,它似乎也是第一次工作。所以,如果我再試一次,它會第一次運作。所以也許這是一個緩存問題?這裏的JavaScript的我:在jQuery中基於ajax響應提交表單
$('#submit_zipcode_frm').submit(function(event){
event.preventDefault();
var self = this;
$(".loader img").show();
z = $('#zipcode');
if(z.val() != '' && z.val().length == 5) {
var value = z.val().replace(/^\s\s*/, '').replace(/\s\s*$/, '');
var intRegex = /^\d+$/;
if(!intRegex.test(value)) {
$(".loader img").hide();
error($(".zipcode_field"));
return false;
}
} else {
$(".loader img").hide();
error($(".zipcode_field"));
return false;
}
$.ajax({
url: "/ajax/save/zipcode",
type: 'GET',
async: false,
cache: false,
dataType: 'html',
data: {zipcode: $('.zipcode_field').val()},
success: function(data) {
if(data == 'false'){
$(".loader img").hide();
error($(".zipcode_field"));
return false;
}else{
self.submit();
getList();
}
}
});
});
和這裏的標記:
<form id="submit_zipcode_frm" class="submit_zipcode" method="post" action="/go" target="_blank">
<div class="zipcode_container">
<span class="loader">
<img src="/assets/img/loader.gif" style="display: none;"/>
</span>
<input type="text" class="zip_input zipcode_field ghost" id="zipcode" name="zipcode" value="Enter your Zip"/>
<div class="start_btn">
<button type="submit">Submit</button>
</div>
<div class="clear"></div>
</div>
<div class="clear"></div>
</form>
任何建議或想法將非常感激。謝謝!
編輯:
只是爲了澄清這裏的步驟:
- 用戶點擊提交按鈕
- 的JavaScript展會的裝載機和驗證長度和值的類型進入
- 如果通過,ajax查找用於真正驗證它是一個有效的USPS郵政編碼
- 如果是,表單被提交併且函數getList()被稱爲
- 如果不是的話,則會引發錯誤
'self.submit()'是否會導致您的提交處理程序再次被調用? –
@PaulGrime否,'formNode.submit()'將繞過任何jQuery綁定的事件。然而,不久之前的返回錯誤不會做任何事情,這是問題的根源。 –