使用单选按钮跳至div

时间:2013-11-16 10:00:12

标签: javascript jquery html css

所以有人问了一些非常相似的东西,但是我需要用户点击按钮而不是选择框。

How to Skip over divs?

此功能适用于选择框,适用于answer

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();
 }

我试图将选择框更改为无线电输入,但我认为它没有通过的值,因为如果我选择是或否,出现的div总是相同的。 (应该是问题2到是,问题3到否)fiddle with problem

有人可以指导我吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

这里的关键是将“跳过”数据以某种方式嵌入到每个相关按钮中。

可以使用普通按钮完成:

<button type="button" onclick="doSubmit(this);">Yes</button>
<button type="button" data-skip="1" onclick="doSubmit(this);">No</button>

“否”按钮将导致跳过一个问题。

为了支持这一点,该功能应改为:

function doSubmit(obj)
{
    var sender = $(obj);
    var oQuestion = sender.parents(".question").first();

    //first, try directly from sender:
    var skipCount = parseInt(sender.data("skip") || "");
    if (isNaN(skipCount)) {
        //try from parent
        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();
}

Updated fiddle