我有一個表單,用戶輸入帳號,我需要檢查輸入的帳號是否是單擊保存按鈕時唯一的,但在表單提交前。這位於magento後端,並且ajax調用指向indexController中的函數acctnumAction()
。magento中的同步jquery ajax呼叫
賬號的數量是動態的,可以有5個,但只有1個,所以我需要對物品進行每個循環。我給帳號字段自己的類,並循環。
這就是我得到的。
function acctCheck(){
jQ.each(jQ(".acctnum"), function(x, y){
var acct = jQ(this).val();
var field = this;
jQ.get("'.Mage::helper('core/url')->getHomeUrl().'dealerlocator/index/acctnum", {acctnum: acct}, function(data){
var items = JSON.parse(data);
if(items != ""){
$(field).addClass("validation-failed");
return false;
}
});
});
}
function saveAndContinueEdit(){
if(acctCheck() !== false){ editForm.submit(); }
}
保存按鈕onclick命中saveAndContinueEdit()
並運行功能來檢查帳戶號碼。
我知道這是行不通的,ajax會異步運行,並且在返回false之前不會返回任何內容,只要它不是false,它就會提交。但我已經試過包裝在$。當Ajax調用無濟於事,我裹在$。當如果saveAndContinueEdit()
,像這樣
function saveAndContinueEdit(){
jQ("#continueEdit").val("1");
jQ.when(acctCheck()).done(function(valid){
if(valid !== false){
editForm.submit();
}
});
}
但沒有做的伎倆要麼,而且可能連它應該如何工作,我只是想盡一切辦法。
讓它在每一箇中的這一點是,我可以設置一個變量爲false,如果一個帳號無效,但仍然通過其餘的迭代,以便該類仍然會被添加到字段,如果他們是無效的,所以用戶會知道,而不是修復一個,然後彈出一個無效,即使我的例子不是這樣編碼的。我知道get返回的數據是有效的,它不會同步運行。
任何人有任何想法?
我沒有時間完全回答,但考慮使用像[Frame.js](https://github.com/bishopZ/Frame.js)這樣的流控制庫。它具有清理問題的能力;它有點像你想要什麼時候做的事情。呃,也許我們應該將Frame重命名爲$ .when。這是一個更好的名字。 – BishopZ