【问题标题】:This Show/Hide function isn't working with MultiSelect elements此显示/隐藏功能不适用于 MultiSelect 元素
【发布时间】:2013-02-14 21:37:46
【问题描述】:

此显示/隐藏功能可以与 Select 元素一起正常工作,但是当我将它们更改为 MultiSelect 元素 (multiple="multiple") 和/或在元素名称中添加方括号(提交 MultiSelect 表单元素所必需的)时它会停止工作到分贝)。如何更改它以使其与 MultiSelect 元素一起使用?

这里有一个工作示例:http://jsfiddle.net/chayacooper/yaq5F/8/

JS

$(document).ready(function () {
    $("#row1, #row2").hide();
    if ($("[name=item1]").val() === "Null" || $("[name=item1]").val() === "") {
        $("#row1").show();
    } else {
        $("#row2").show()
    };
});

HTML

<div id=row1 style="font-weight:bold">Row 1 - Nothing selected</div>
<div id=row2 style="font-weight:bold; display:none;">Row 2 - Something selected</div>

<select name=item1 class="field">
<option value="Null">Select</option>
<option value=1>Option 1</option>
<option value=2>Option 2</option>
<option value=3>Option 3</option>
</select>

【问题讨论】:

    标签: jquery show-hide multi-select


    【解决方案1】:

    使用multiple 选项时,返回值是一个数组,而不是字符串,因为您可以通过按住控制键选择多个值。

    你可能想用$.inArray("Null", $(".field").val())之类的东西检查值


    为了将来参考,看看返回的值是什么确实很有帮助。一个简单的console.log($(".field").val()) 就是我所做的一切来看看发生了什么。

    【讨论】:

    • 我无法确定在何处插入该代码。你介意告诉我如何将它添加到我的示例代码中吗?
    • 当然 --> jsfiddle.net/ChrisMBarr/yaq5F/11 - 请记住,当添加 multiple 属性时,将“选择”作为第一项确实不再有意义。你可能想做一些不同的事情。
    • 谢谢 :-D 我将它与几个多选元素一起使用,这些元素是根据从数据库中获取的值预先选择的。有没有办法使用元素的名称来做到这一点,还是我需要使用 id/class?
    • 当然,您可以像在 CSS 中一样使用 jQuery 选择项目。 $("select[name='item1']") 可能是您正在寻找的。另外,如果对您有帮助,请将我的回答标记为正确:)
    • 如果我不清楚,我很抱歉。我在问如何将它合并到我已经这样做的现有函数中:-) $("[name=item1]").val() === "Null" || $("[name=item1]").val() === "")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 2011-10-29
    • 1970-01-01
    • 2011-06-07
    • 2016-07-21
    • 2021-07-04
    • 1970-01-01
    相关资源
    最近更新 更多