使用jquery选择器,多个选择字段从表单获取值

时间:2013-10-15 21:02:13

标签: jquery forms select selector

首先,我很难制定我的头衔,所以我很抱歉。 无论如何,关于我的问题。

我有一个很大的信息表,其中一些单元格有表单字段,特别是每行有两个表单字段。在行的末尾,我有一个“保存”链接。

有多行,每行都有自己的字段集。

我很难将这两个值存储在变量中,因为它们是动态呈现的,我没有连接到每个值的特定ID。

因此,我认为向上遍历DOM会让我得到我的结果,但是不,到目前为止我只是“未定义”(我认为我走在正确的道路上,我无法弄明白)。

以此代码为例;

<td>
<select multiple="multiple" name="paintings">
<option value="The Persistance of Memory" selected="selected">The Persistance of Memory</option>
<option value="The Great Masturbator" selected="selected">The Great Masturbator</option>
<option value="The Scream">The Scream</option>
</select>
</td>
<td>
<select name="painters">
<option value="VanGogh" selected="selected">Van Gogh</option>
<option value="Dali">Dali</option>
<option value="Munch">Munch</option>
</select>
</td>
<td>
<a href="#">Save</a>
</td>

当用户点击“保存”时,所选值应存储在变量中。 这就是我到目前为止所尝试过的;

$("a").click( function (e){
    str = $(this).find("select[name|='painters']").val() || [];
    alert(str.join(","));

我没有“找到”,而是尝试了“父母”,“前”和“最接近”。 我也尝试将选择器指定为“选择选项:已选择”。

这适用于获取所有元素或只是一个元素,但是当我试图找到最接近的两个元素并将其存储在两个不同的变量元素中时,它将无法工作。

非常感谢任何建议或帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用.map()来获取一组值:(您的{x}}遍历DOM树,因为您需要返回{{1然后find()从那里开始)

tr

你的小提琴! http://jsfiddle.net/5tLxk/

编辑:由于您有find,因此您可以在其中嵌套另一个$("a").click( function (e) { var selectValues = $(this).closest("tr").find("select").map(function() { return this.value; }).get(); }); 以获取所有值(小提琴:http://jsfiddle.net/5tLxk/1/

multi-select