0

我在表单中添加了行选项,用户可以根据需要添加任意数量的行,然后通过 ajax 一次性提交。

每行包含选择框和一堆文本框。

文本框已正确提交,但我的表单仅在第一行中为所有其他行提交选择框值,尽管值不同。

正确解释了我的问题(希望如此),以下是选择框的 html 代码代码:

<td><span id="xyz"><select id="whatever">
<option value="one">ONE</option>
 <option value="two">TWO</option>
<option value="three">THREE</option>
</select>
</span></td>

以下是 jQuery 获取所有选择框值的不同代码版本的代码:

$("#table tbody tr").each(function(){

var select = $(this).find("td:eq(0)").find("select#whatever).val();
//etc
}

或者

$("#table tbody tr").each(function(){

var select = $("select#whatever).val();
//etc
}

或者

$("#table tbody tr").each(function(){

var select = $(this).find("td:eq(0)").find("select#whatever option:selected").val();
//etc
}

或者

$("#table tbody tr").each(function(){

var select = $(this).find("td:eq(0)").find("select#whatever").val();
//etc
}

或者

$("#table tbody tr").each(function(){

var select = $(this).find("td:eq(0)").find("select").val();
//etc
}

或者

$("#table tbody tr").each(function(){

var select = $(this).find("td:eq(0).xyz").find("select#whatever").val();
//etc
}

或者

$("#table tbody tr").each(function(){

var select = $(this).find("td:eq(0).dropdown select#whatever").val();
//etc
}


$("#table tbody tr").each(function(){

var select = $(this).find("td:eq(0)").find("select#whatever").val();
//etc
}

或者

$("#table tbody tr").each(function(){

var select = $("select#whatever option:selected").val();
//etc
}

或者

$("#table tbody tr").each(function(){

var select = $("select option:selected").val();
//etc
}

如果我没记错的话,最重要的是代码的各种版本,我已经在 IE 8 中尝试过,但没有取得多大成功。

它们在 IE 9 和 firefox 等其他浏览器中运行良好。

循环工作正常,因为我能够获取其他输入框值。

我也尝试过没有 id 属性的 html select boxe,但也没有用。

我真的需要有人帮忙。

提前感谢天才。

标记。

4

2 回答 2

2

我想你正在寻找这个:

var selectValue = $(this).find("td:eq(0)").find("select option:selected").val();

于 2012-07-27T18:53:35.427 回答
1

假设每行只有一个选择框,这应该有效:

var values = $("#table select").map(function(){
    return $(this).val();
}).get();

如果您有更复杂的标记,并且只想从每行的第一个单元格中获取值,则可以将选择器更改为

$('#table td:first-child select') 
于 2012-07-27T18:56:03.197 回答