【问题标题】:jQuery Mobile: disable selected option in other select menusjQuery Mobile:禁用其他选择菜单中的选定选项
【发布时间】:2015-07-17 16:12:25
【问题描述】:

我的 jQuery 移动页面上有三个选择菜单。如果用户选择一个选项,我希望在其他选择菜单中禁用此选项。

到目前为止,我已经设法在选择元素中禁用了该选项,但在选项弹出窗口中没有。用户仍然可以在弹出窗口中选择一个选项,但我想阻止这种情况。

我的小提琴来了: http://jsfiddle.net/asvyY/57/

我的代码:

HTML:

<div data-role="page" id="page1">
    <div data-role="header">
         <h1>My page</h1> 
    </div>
    <div role="main" class="ui-content">
        <form>
            <select class="filter-menu" data-native-menu="false">
               <option value="1">1</option>
               <option value="2">2</option>
               <option value="3">3</option>
               <option value="4">4</option>
               <option value="5">5</option>
            </select>

            <select class="filter-menu" data-native-menu="false">
               <option value="1">1</option>
               <option value="2">2</option>
               <option value="3">3</option>
               <option value="4">4</option>
               <option value="5">5</option>
            </select>

            <select class="filter-menu" data-native-menu="false">
               <option value="1">1</option>
               <option value="2">2</option>
               <option value="3">3</option>
               <option value="4">4</option>
               <option value="5">5</option>
            </select>
        </form>
    </div>
</div>

我的 JS:

$('.filter-menu').on('change', function() {
  var $changedSelect = $(this);
  var selectedId = $(this).val();

  $('.filter-menu').not($changedSelect).each(function() {
      $(this).find('option[value=' + selectedId + ']').attr('disabled', 'disabled')
  });
});

【问题讨论】:

标签: javascript jquery jquery-mobile


【解决方案1】:

解决方案:

http://jsfiddle.net/asvyY/59/

$('.filter-menu').on('change', function () {
            $('.filter-menu').find('option').prop('disabled', false);

           $('.filter-menu').each(function () {
               $('.filter-menu').not(this).find('option[value="' + this.value + '"]').prop('disabled', true);
            });

            // rebuild select menus
            $('select').selectmenu('refresh', true);
});

重建选择菜单是必要的,因为它是 jQuery Mobile。

【讨论】:

    【解决方案2】:

    在您的手机上试试这个,它会使选项在物理上无法选择(但不可见)

    $('select.filter-menu').not($changedSelect).each(function() {
        $(this).find('option[value="' + selectedId.toString() + '"]').prop('disabled', true);
    });
    

    【讨论】:

    • 请仔细阅读我的帖子。我已经设法使用我提供的代码使选项在物理上无法选择,但不可见。我找到了解决方案: $('select').selectmenu('refresh', true);
    • @Max 尝试了很多,但我没有想到这个刷新的东西。请张贴你的答案。并且由于此实现在 jQuery Mobile 上,是否需要刷新?
    • @Max 啊,我的错。只是另一件事,使用 $('.filter-menu') 而不是 $('select.filter-menu') 返回不需要的 span 元素(在小提琴中注意到了这一点)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 2015-03-25
    • 2015-01-14
    • 2015-07-10
    • 1970-01-01
    相关资源
    最近更新 更多