【问题标题】:jQuery - open selectbox on click on li, when option chosen trigger checkboxjQuery - 单击LI的Open SelectBox,选择触发复选框时选项
【发布时间】:2014-08-03 20:55:38
【问题描述】:

我有一个新问题,经过一些测试和研究后无法解决。

我有几个选择框嵌套在几个 ul>li 中,如下所示:

<ul>
    <li>
<span class="select">

<input type="checkbox" name="kurse[]" value="" />

<select name="numbers1"  value="">
  <option value="">Bitte w&auml;hle eine Option...</option>
  <option value="Option1">Option1</option>
  <option value="Option2">Option2</option>
  <option value="Option3">Option3</option>
</select>
</span>

    </li>
    <li>
        <input type="checkbox" name="kurse[]" value="" />
<span class="select">

<select name="numbers2"  value="">
  <option value="">Bitte w&auml;hle eine Option...</option>
  <option value="Option1">Option1</option>
  <option value="Option2">Option2</option>
  <option value="Option3">Option3</option>
</select>
</span>

    </li>
    <li>
        <input type="checkbox" name="kurse[]" value="" />
<span class="select">

<select name="numbers3" value="">
  <option value="">Bitte w&auml;hle eine Option...</option>
  <option value="Option1">Option1</option>
  <option value="Option2">Option2</option>
  <option value="Option3">Option3</option>
</select>
</span>

    </li>
</ul>

现在我的 Javascript 通过单击一个 li 来触发嵌套复选框。这是脚本:

jQuery(document).on('click', 'ul li', function () {
    jQuery(this).toggleClass('active').siblings();
    jQuery(this).find('input').prop('checked', function () {
        return !this.checked;
    });
});

我必须添加选择框,现在我想打开嵌套在已单击的 li 中的选择框。选择一个选项后,我想要嵌套在同一个 li 内的复选框“单击”。

通过编辑上面的代码,我得到了这样的结果:

jQuery(document).on('click', 'ul li', function () {
    jQuery(this).find('select').prop(function () {
        jQuery(this).trigger('click');
    });
});

但这不起作用,因为我缺乏 jQuery 知识。

对此有什么建议吗?是否可以使用一些 jQuery,或者我需要更改为 Chosen 或类似的东西吗?

这是一个小提琴:

http://jsfiddle.net/QHv6B/1/

【问题讨论】:

    标签: jquery checkbox drop-down-menu html-lists


    【解决方案1】:

    我刚刚编辑了您的 jQuery 代码,并在您的 html 中更改了两行以使其正常工作。

    JSFiddle

    jQuery(document).on('click', 'ul li', function () {
        jQuery(this).toggleClass('active').siblings();
    });
    
    jQuery(document).on('click', 'ul li', function () {
        jQuery(this).find('select').prop(function () {
            jQuery(this).trigger('click');
        });
    });
    
    jQuery(document).on('change', 'select', function () {
        var selectedItem = $(this).find('option:selected').attr('value');
        var checkBox = $(this).prev();
        if (typeof selectedItem === 'undefined' || selectedItem === "") {
            alert("You must select an option");
            $(checkBox).prop('checked', false);
        } else {
            $(checkBox).prop('checked', true);
        }
    });
    

    【讨论】:

    • 您好 PalinDrome555,感谢您的回答;这几乎是我想要实现的目标!现在,在选择一个选项时,复选框会被选中,这已经很好了!但是是否可以通过单击li来“打开”选择框以选择选项?
    • 恐怕不行,唯一的办法就是点击选择框打开它。你要去的壁橱就是这个Updated Fiddle
    • 小提琴看起来不错,到目前为止再次感谢!将在我的“环境”中对其进行测试并提供反馈!
    • 在我的环境中对此进行了测试,并且必须进行一些编辑才能使其正常工作!但是我遇到了另一个问题......是否可以将选择的选项值动态添加到另一个隐藏字段的值中?现在那些 ul-lists 和 checkboxes 在一个表单中。在表单提交和成功验证时,不会提交选择的选项值,在验证错误时,填写必填字段并重新提交选择的选项值会被传输。在第一个选项中,选择要动态添加到隐藏输入值中的选择框的值!
    • 我明天去看看,现在不在我的电脑附近。
    猜你喜欢
    • 2015-05-26
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 2012-09-19
    • 2011-10-10
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多