循环遍历所有tr并验证jquery中td内的控件

时间:2010-09-08 11:44:46

标签: jquery-selectors

我有一个结构为

的表
<table>
    <tr>
        <td>
            <input type="text" id="field_1" />
            <input type="text" id="field_2" />
        </td>
    </tr>
    <tr>
        <td>
            <input type="text" id="field_1" />
            <input type="text" id="field_2" />
        </td>
    </tr>
    <tr>
        <td>
            <input type="text" id="field_1" />
            <input type="text" id="field_2" />
        </td>
    </tr>
    <tr>
        <td>
        </td>
    </tr>
</table>​

我想遍历所有tr并检查field_1和field_2是否为空。

我的示例代码

$('#table-1 tr').each(function () {
    var title = $(this).find("input[id*='field_1']");
    var link = $(this).find("input[id*='field_2']");
    if (title.value == '' || link.value == '') {
        alert("empty");
    }
});

这为链接和标题提供了未定义!!

1 个答案:

答案 0 :(得分:1)

首先,您需要将ID更改为类,因为您无法在页面上重复使用ID。它们必须是独一无二的。

您的代码的主要问题是您正试图对jQuery对象使用.value

您需要.val()从jQuery对象中获取<input>的值,如title.val()中所示。

或者直接使用.value属性,您需要首先从jQuery对象中获取DOM元素,如title[0].value中所示。

$('#table-1 tr').each(function() {
      var title = $(this).find("input[id*='field_1']");
      var link = $(this).find("input[id*='field_2']");

      if(title[0].value=='' || link[0].value=='') {
          alert("empty");
      }
});