我正在使用插件http://www.jquery-steps.com/,根据文档,我应该返回true
,以允许用户传递到下一张幻灯片。我正在验证邮政编码是否存在于我们的数据库中。仅当服务器验证邮政编码在我们的数据库中存在时,才允许用户单击next
。
我尝试过的事情
onStepChanging: function (event, currentIndex, newIndex) {
if(currentIndex == 2){
getZipCode($("#zip").val()).done(function(returnedData){
if(returnedData.length > 0){
return true;
}else{
setHelperText($("#zip_helper"), 'Zip Code doesn\'t exists in our database. Pick the closest one please');
}
}).fail(function () {
setHelperText($("#zip_helper"),'There was an error connecting to our servers');
});
return false;
}
}
function getZipCode(zip_code) {
return $.get('../ajax/zip-code', {
q: zip_code
});
}
我期望的结果
仅当我们的数据库中存在邮政编码时,用户才可以单击下一步。
从我在网上阅读的内容来看,问题在于我最后要返回return false
,因此脚本始终返回false。我如何return true
内的.done()
才能适用于外部范围?
答案 0 :(得分:0)
在同步Ajax调用中返回true
也许您是说异步。
如何在.done()内部返回true以适用于外部范围?
简短的答案是您不能这样做。如果他们的库支持promise驱动的回调,那么这里是一个选项,但是浏览他们的文档后,看起来就不一样了。您需要重组代码或使用其他库。在不熟悉所有代码或所使用的库的情况下,我无法提供详细信息,但我建议进行重组,以便在加载steps
插件之前从服务器中获取必要的数据