【问题标题】:jQuery: Check to see if table row containing certain values exists alreadyjQuery:检查是否已经存在包含某些值的表行
【发布时间】:2011-04-09 03:27:01
【问题描述】:

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

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

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

如果有帮助的话,表ID是#tblspecializations

非常感谢您的意见。

【问题讨论】:

    标签: javascript html jquery validation jquery-selectors


    【解决方案1】:

    你也许可以使用:contains():

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

    -Example

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

    【讨论】:

    • 像炸弹一样工作,非常感谢。我不太关心这些值是否相似,因为它们无论如何都是预定义的值。我简单地添加了以下功能,一切都很好: if($('#tblspecialization td:contains('+$slabel+')').length){ alert('已经输入了相同类型和月份的专业化。 ');返回假; } 感谢您的帮助
    • 1+ 为您提供帮助、时间和简单有效的答案
    • @webfac: 很高兴我能帮上忙 :-)
    • +1 提供了一个简短的解决方案,并教会了我一些新东西:)
    【解决方案2】:

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

    【讨论】:

    • 我真的很喜欢这种方法,并且确信这是更好的做法,但是对于这种情况,所有代码都已经以某种方式结构化,虽然不是最好的方式,但我需要一个我可以简单地解决方案插入当前逻辑。非常感谢您的指导!非常感谢
    • 1+ 给你的帮助和时间
    【解决方案3】:

    简而言之,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() 函数,您将获得它的兄弟,即第二列。

    【讨论】:

    • 这也适用于我,但我发现安迪 E 的答案是最短的解决方案。谢谢你的时间!它不会被忽视。
    • 1+ 为您提供帮助和时间
    • @webfac 没问题;不客气,感谢您的支持。
    猜你喜欢
    • 2013-12-19
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    相关资源
    最近更新 更多