我有一个带有 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;
}
}
...
所以它会阻止幻灯片继续移动。
现在当我考虑它时,我可能会有像“错误答案”这样的幻灯片,所以我可以将幻灯片移到那里,但无论如何我想看到第一个解决方案。