通过jQuery检索getElementsByName()数据

时间:2013-05-26 19:52:29

标签: jquery

我正在尝试在一系列复选框中检索值:

$(document).ready(function() {
    var folders = document.getElementsByName('note-behaviour-folder-add[]'); 
    for(var x = 0; x < folders.length; x++){
        if ((folders[x].type === "checkbox") && (folders[x].checked)) {
            alert("Yes!");
        }
    }
});

虽然命名元素中有数据,但上面的代码似乎没有检索到任何数据。我也尝试过jQuery替代方案:

var folders = $("[name='note-behaviour-folder-add[]']");

但是这很疯狂,抓住了应用程序中的所有内容。

至于HTML本身:

<div class="note-behaviour-folder-box" id="note-behaviour-folder-box-2">
    <input type="checkbox" id="note-behaviour-folder-item-2" name="note-behaviour-folder-add[2]" value="2" checked="checked">Plot
    <dl>
        <dt><label for="note-behaviour-folder-item-select-2">Behaviours</label></dt>
        <dd><select name="note-behaviour-folder-item-select-2" class="chzn-select">
            <option value="1">List</option>
            <option value="2">Paragraph</option>
            <option value="3" selected="selected">Chapter</option>
        </select></dd>
    </dl>
</div>

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

因为您正在使用:

<input ... name="note-behaviour-folder-add[2]" value="2" checked="checked">Plot
                                           ^-----

然后:

var folders = $("[name='note-behaviour-folder-add[]']");

不行。使用:

var folders = $("[name^='note-behaviour-folder-add']");
                      ^----                       ^---- notice the differences

这称为Attribute Starts With Selector [name^="value"]

这将为您<input name="note-behaviour-folder-add[1]" ...><input name="note-behaviour-folder-add[3]" ...>以及namenote-behaviour-folder-add开头的所有内容。