我有一个滑块与3个幻灯片-介绍,问题,提交。
现在,我想确保如果问题回答错误,人们就不能滑动提交。
移动幻灯片的功能如下所示:
function changeSlide(slide){
// In case current slide is question check the answer
if (jQuery('.modalSteps li.current',base).hasClass('questionStep')){
checkAnswer(jQuery('input[name="question_id"]',base).val(), jQuery('input[name="answer"]:checked',base).val());
}
jQuery('.modalSteps li.current',base).fadeOut('fast',function(){
jQuery(this).removeClass('current');
jQuery(slide).fadeIn('fast',function(){
jQuery(slide).addClass('current');
});
});
// In case the new slide is question, load the question
if (jQuery(slide).hasClass('questionStep')){
var country = jQuery('input[name="country"]:checked',base).val();
loadQuestion(country);
}
}现在,正如您在第一行看到的,我调用了函数checkAnswer,该函数接受问题的id和答案的id,并将其传递给AJAX调用。
function checkAnswer(question, answer){
jQuery.ajax({
url: window.base_url+'ajax/check_answer/'+question+'/'+answer+'/',
success: function(data){
if (!data.success){
jQuery('.question',base).html(data.message);
}
}
});
}我遇到的问题是我不能说
if(checkAnswer(...)){}由于Ajax,它总是返回false或undefined。我需要的是这样的东西:
function changeSlide(slide){
// In case current slide is question check the answer
if (jQuery('.modalSteps li.current',base).hasClass('questionStep')){
if (!checkAnswer(jQuery('input[name="question_id"]',base).val(), jQuery('input[name="answer"]:checked',base).val())){
return false;
}
}
...因此,它将阻止滑梯继续前行。
现在,当我思考它的时候,我可能会看到像“错误的答案”这样的幻灯片,所以我可以把幻灯片移到那里,但我还是希望看到第一个解决方案。
发布于 2012-06-21 11:11:29
您可以将ajax的异步选项设置为false,以等待服务器的回复。因此,代码可能如下所示。
function checkAnswer(question, answer){
result = false;
jQuery.ajax({
async: false,
url: window.base_url+'ajax/check_answer/'+question+'/'+answer+'/',
success: function(data){
result = data.success
if (!data.success){
jQuery('.question',base).html(data.message);
}
}
});
return result;
}https://stackoverflow.com/questions/11130984
复制相似问题