【问题标题】:Jquery UI Tabs: Next and Previous enable/disable based on select boxesJquery UI 选项卡:基于选择框的下一个和上一个启用/禁用
【发布时间】:2012-07-26 17:09:02
【问题描述】:

我目前正在使用仅使用下一个/上一个按钮操作的 Jquery UI 选项卡(这将迫使用户按顺序浏览选项卡)。在我的第一个选项卡中,我有一组动态选择框,我试图让用户选择一个类别及其对应的子类别,然后才能启用 NEXT 按钮。但是下一个按钮根本没有被禁用。

如何让用户从所有相应的选择框中进行选择,然后启用“下一步”按钮? EXAMPLE

我在 JS 中添加了$('.update').change(function() 用于 NEXT/PREVIOUS 以检测最后一个选择框中的选定项目并按下 NEXT 按钮

用于 NEXT/Previous 的 JS

<script>
$(function() {
    var $tabs = $('#tabs').tabs({
        disabled: [0, 1]
    });

    $(".ui-tabs-panel").each(function(i) {
        var totalSize = $(".ui-tabs-panel").size() - 1;

        if (i != totalSize) {
            next = i + 2;
            $(this).append("<a href='#' class='next-tab mover' rel='" + next + "'>Next Page &#187;</a>");
        }

        if (i != 0) {
            prev = i;
            $(this).append("<a href='#' class='prev-tab mover' rel='" + prev + "'>&#171; Prev Page</a>");
        }
    });

    $('.update').change(function() {
        $('#tabs').tabs(
            'option',
            'disabled',
            (
                $(this).hasClass('last') &&
                parseInt($(this).val(), 10) > 0 ?
                [] :
                [1]
            )
        );
    });

    $('.next-tab, .prev-tab').click(function() {
        var tabIndex = $(this).attr("rel");
        $tabs.tabs('enable', tabIndex)
            .tabs('select', tabIndex)
            .tabs("option","disabled", [0, 1]);
        return false;
    });
});
</script>

updateSelectBox.js

// following line is added to detect last select box picked
$('.update').removeClass('last');
if (!data.error) {
    obj.next('.update').html(data.list).removeAttr('disabled hidden');
} else {
    // following line is changed
    obj.addClass('last').nextAll('.update').attr({'disabled': true, 'hidden':true}).html('<option value="">----</option>');
}

选择框的 HTML

<select name="gender" id="gender" class="update" size="7"> 
  <option value="">Select one</option> 
    <?php if (!empty($list)) { ?> 
        <?php foreach($list as $row) { ?> 
            <option value="<?php echo $row['id']; ?>"> 
                <?php echo $row['category_name']; ?> 
   </option> 
    <?php } ?> 
    <?php } ?> 
</select> 

<select name="category" id="category" class="update" disabled="disabled" hidden="hidden" size="7"> 
   <option value="">----</option> 
</select> 

<select name="colour" id="colour" class="update" disabled="disabled" hidden="hidden" size="7"> 
   <option value="">----</option> 
</select> 

【问题讨论】:

  • 欢迎回来。对不起,我不明白你的变化。你想达到什么目标?为什么禁用第一个选项卡,这没有任何意义。为什么你首先启用一个选项卡并立即禁用所有选项卡?上一个版本让您感到不安的是什么?
  • @scessor 嘿!谢谢,原因是我想一直禁用 TAB 菜单。我只希望用户使用下一个/上一个按钮浏览选项卡。

标签: javascript jquery jquery-ui tabs


【解决方案1】:

好的,这是未经测试的。如果您不在第一个选项卡 (1)真的最后一个 选项卡上,并且选项(中性除外),则仅在下一次/上一次单击时更改选项卡选择(2).

$('.next-tab, .prev-tab').click(function() {
    var tabIndex = $(this).attr("rel");
    if (
        /*(1)*/ $('#tabs').tabs('option', 'selected') > 0 ||
        /*(2)*/ ($('.update.last').length > 0 && parseInt($('.update.last').val(), 10) > 0)
    ) {
        $tabs.tabs('enable', tabIndex)
            .tabs('select', tabIndex)
            .tabs("option","disabled", [0, 1]);
    }
    return false;
});

祝你好运,明天见 :-)

【讨论】:

  • 嘿,我的朋友,我正在使用这种方法,但现在我已经包含了输入字段。如果您想在这里赚取更多积分,请联系QUESTION
猜你喜欢
  • 1970-01-01
  • 2013-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
相关资源
最近更新 更多