1

在提交表单之前,我需要编写一些 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 以获得文本框值,我将不胜感激。

提前致谢。

4

3 回答 3

3

通过 id 访问它?

$("#test").val();

这个例子中的 # 意味着通过它的 id 找到一个元素(jQuery docs

于 2014-02-26T20:22:33.410 回答
0
 var textboxvalue= $(this).closest('td:eq(1) input').val();

eq 基于 0,如果 1 表示第二个 td,对于我们使用的文本框input

于 2014-02-26T20:29:29.630 回答
0

closest()沿着 DOM 树向上移动,而不是向下移动,因此如果$(this)等于当前行,您将永远无法td使用closest('td').

假设您不能像 Jamie 建议的那样简单地使用该id属性input直接访问,您将需要使用:

$(this).children("td:eq(0)");

. . . 获取第一td行,假设$(this)引用了你想要的行。要访问其中的选择值,请使用:

$(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();

(第一个更快)

于 2014-02-26T20:47:05.947 回答