我有一个将行追加到表中的jQuery脚本。简而言之,用户可以从下拉菜单中选择一个值,然后输入'x‘月数并点击'add',这会将该行附加到表中。例如,下面的行由用户追加:
<tr>
<td>Some Value</td>
<td>2</td>
</tr>
现在,如果用户再次执行相同的操作,我需要停止该过程,并警告他正在尝试添加重复的值。如何-使用jQuery -我是否可以检查上面的行是否已经存在,其中第一个和第二个<td>
元素与他试图添加的数据具有相同的值?我之所以只说第一个和第二个<td>
元素,是因为行中还有其他<td>
元素,但它们包含将新添加的数据提交到服务器端脚本的隐藏字段,因此我希望验证尽可能简短和简单。
如果有任何帮助,则表ID为#tblspecializations
非常感谢您的意见。
发布于 2010-09-07 18:51:05
您也许能够使用
$('#tblspecializations tr > td:contains(Some Value) + td:contains(2)').length
但是请注意,如果给定的字符串与元素文本中的任何位置匹配,则:contains()将返回该元素。
发布于 2010-09-07 18:52:28
我建议您将数据保存在某种数据结构中(例如,一个(关联)数组)。因此,您将验证结构中的数据,而不是DOM中的数据。
发布于 2010-09-07 18:59:36
简而言之,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()
函数,您将获得它的兄弟,即第二列。
https://stackoverflow.com/questions/3657885
复制相似问题