我正在进行移动html5 / jquery测验我预加载 然后,从服务器到一个html文件的所有问题 有按钮在问题之间来回移动。 效果很好,但现在我需要跳过某些问题 如果该人通过无线电是/否输入回答“否” 问题20,然后是21和22,不需要显示 我怎样才能做到这一点?这是我一直在使用的代码片段:
JSFIDDLE:
如果问题1的人回答“否”,则想跳过问题2
function doSubmit(obj)
{
$(obj).parents(".question").first().next().show();
$(obj).parents(".question").first().hide();
}
<div class="question" id="question11" >
<input type="text" name="question11.1" qid="question11" />
<input type=submit id="button" value="Submit" onclick='doSubmit(this)' />
答案 0 :(得分:0)
每个答案都需要一些指示,说明在选择时该怎么做。在应该跳过的答案上加上data-next
属性,并将属性值设置为下一个所需问题的ID。
现在,当选择了答案时,请检查其data-next
属性,如果存在,则将下一个问题设置为所选的ID,否则按照您现在的步骤进行操作。
备份还需要进行一些更改。您需要跳过,直到找到style.display为非'none'的问题。
基本思路是使用显示样式设置来指出要回答的问题以及答案的data-next
属性,以选择要回答的问题。
希望允许你继续。
答案 1 :(得分:0)
要通过尽可能少的HTML更改来实现此类功能,您可以设置一个类,例如对于将导致此类跳过的元素,“skipper”,则元素值将是一个数字,用于确定要跳过的问题数。
例如,要让答案为“否”导致跳过,请使用这样的HTML:
<select name="question1.1" class="skipper">
<option name="question1.1" ano="1" qid="question1" value="0" checked/>Yes
<option name="question1.1" ano="1" qid="question1" value="1" />No
</select>
由于你并没有在其他地方使用这个值,所以应该没问题。
现在使用它,改为使用这样的代码:
function doSubmit(obj)
{
var oQuestion = $(obj).parents(".question").first();
var skipCount = parseInt(oQuestion.find(".skipper").val(), 10);
if (isNaN(skipCount) || skipCount < 0)
skipCount = 0;
var oNext = oQuestion.next();
for (var i = 0; i < skipCount; i++)
oNext = oNext.next();
oNext.data("prev_index", oQuestion.index());
oNext.show();
oQuestion.hide();
}
function backToPrev(obj)
{
var oQuestion = $(obj).parents(".question").first();
var index = parseInt(oQuestion.data("prev_index"), 10);
if (isNaN(index) || index < 0)
oQuestion.prev().show();
else
$(".question").eq(index).show();
oQuestion.hide();
}
如您所见,代码会查找“skipper”值,并指定要返回的问题的索引。