在提交表单之前,我需要编写一些jQuery / javascript来进行一些验证,因为我必须根据一些非常具体的结果进行检查。根据我的测试,我相信我在我的表中使用我的验证测试访问正确的数据行$(this),但是我无法将值输入到行的第二个td的文本框中。有些事情是不正确的:
alert($(this).closest('td').find($("input[name=test]")).val())
阻止jQuery将值输入到下面html的测试文本框中。
<tr>
<td>
<select id="selectId3" name="selectId3" data-val-required="The selectId3 field is required." data-val-number="The field selectId3 must be a number." data-val="true">
<option value="">-- Select Area --</option>
<option value="2">2</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="10">10</option>
<option value="13">13</option>
<option value="16">16</option>
<option value="17">17</option>
</select>
</td>
<td>
<span style="label2">
<input id="test" type="text" value="" name="test">
</span>
</td>
<td> </td>
$('#myForm').submit(function () {
$("select").each(function () {
if (($(this).val() != '') && ($(this).val() != '-- Select Area --')) {
alert($(this).closest('td').find($("input[name=test]")).val());
}
});
return false;
});
如果有人能够描述正确的jQuery来获取文本框值,我将非常感激。
提前致谢。
答案 0 :(得分:3)
答案 1 :(得分:0)
var textboxvalue= $(this).closest('td:eq(1) input').val();
eq为0,如果为1则为第二个td,对于文本框我们使用input
答案 2 :(得分:0)
closest()
向上移动DOM树,而不是向下移动,因此如果$(this)
等于当前行,您将永远不会使用td
在其中找到closest('td')
标记。< / p>
假设您不能简单地使用id
属性直接访问input
,正如Jamie建议的那样,您需要使用:
$(this).children("td:eq(0)");
。 。 。获取行的第一个td
,假设$(this)
引用了您想要的行。要访问其中的select值,请使用:
$(this).children("td:eq(0)").find("select").val();
编辑:实际上,根据您的代码,您可以通过一系列方法来访问该select
元素的值,但很难说哪个是最合适的高效而无需查看其余代码,了解逻辑的上下文。
更新:根据您的评论,请尝试使用以下代码:
$(this).closest("tr").children("td:eq(0)").find("select").val();
。 。 。要么 。 。
$(this).closest("tr").children("td:eq(0) select").val();
(第一个更快)