我有一个jQuery脚本,可以在表中附加一行。简而言之,用户可以从下拉菜单中选择一个值,然后输入“x”月份数量并点击“添加”,这会将行附加到表格中。例如,用户追加以下行:
<tr>
<td>Some Value</td>
<td>2</td>
</tr>
现在,如果用户再次执行相同的操作,我需要停止该过程并提醒他他正在尝试添加重复值。如何 - 使用jQuery - 我可以检查以上行是否已经存在,其中第一个和第二个<td>
元素与他试图添加的数据具有相同的值?我之所以说第一个和第二个<td>
元素的原因是因为行中还有其他<td>
元素,但是它们包含隐藏字段,这些字段将新添加的数据提交到服务器端脚本,所以我会希望验证尽可能简短。
如果有任何帮助,表格ID为#tblspecializations
非常感谢您的意见。
答案 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()
函数获取其兄弟,即第二列。