jQuery:检查是否已存在包含某些值的表行

时间:2010-09-07 10:43:05

标签: javascript jquery jquery-selectors validation

我有一个jQuery脚本,可以在表中附加一行。简而言之,用户可以从下拉菜单中选择一个值,然后输入“x”月份数量并点击“添加”,这会将行附加到表格中。例如,用户追加以下行:

<tr>
  <td>Some Value</td>
  <td>2</td>
</tr>

现在,如果用户再次执行相同的操作,我需要停止该过程并提醒他他正在尝试添加重复值。如何 - 使用jQuery - 我可以检查以上行是否已经存在,其中第一个和第二个<td>元素与他试图添加的数据具有相同的值?我之所以说第一个和第二个<td>元素的原因是因为行中还有其他<td>元素,但是它们包含隐藏字段,这些字段将新添加的数据提交到服务器端脚本,所以我会希望验证尽可能简短。

如果有任何帮助,表格ID为#tblspecializations

非常感谢您的意见。

3 个答案:

答案 0 :(得分:20)

您可以使用:contains()

$('#tblspecializations tr > td:contains(Some Value) + td:contains(2)').length

- Example

请注意,如果给定字符串匹配元素文本中的任何位置,:contains()将返回该元素。

答案 1 :(得分:2)

我建议您将数据保存在某些数据结构中(例如(关联)数组)。因此,您将验证结构中的数据,而不是DOM中的数据。

答案 2 :(得分:1)

简而言之,click()处理程序中的以下代码可以帮助您处理您的情况;你可以see the whole code in action

$(function(){
    $("#btn").click(function(){
        var table = $("#tblspecializations");
        var firstTd = $("td:first", table);
        var secondTd = firstTd.next();

        if(firstTd.text() == $("#dropdown").val() && secondTd.text() == $("#num").val())
            alert("Error: You're trying to add the same entry");
    });
});

简短说明:在选择器中使用td:first,您将获得表格中的第一列,并使用next()函数获取其兄弟,即第二列。