javascript - 如果数据不存在则追加到表上 jQuery

标签 javascript jquery

我有一个附加行数据的代码。我想要的是提醒用户是否会添加表中已存在的详细信息。

JSFIDDLE

$('#try').click(function() {   
var text = document.getElementById('add');
    if($('#test td:contains("'+text.value+'")') == true) {
        alert('not allowed');
    }else{   
        $('#test').append('<tr><td>' + text.value + '</td></tr>');
    }
text.value = '';    
});

我的代码中发生的情况是,它不会在 :contains 行上进行过滤。

我的代码有什么问题?

最佳答案

首先,您必须测试 jQuery 对象的长度以了解 DOM 中是否存在元素:

if ($('#test td:contains("'+text.value+'")').length) {

但是,如果 text.value 包含任何破坏选择器的内容(例如引号),您的代码将会失败,因此您最好直接使用 filter 测试内容:

var elems = $('#test td').filter(function(){
     return this.innerHTML.indexOf(text.value) !== -1
});
if (elems.length) {

Fixed fiddle

实际上,您想要的可能不是测试单元格是否“包含”该字符串,而是测试它是否仅包含该字符串(即,您想要允许“test 21”"test"(当已有 "test 2" 时)。为此,您可以这样过滤:

var elems = $('#test td').filter(function(){
     return $(this).text()===text.value
});
if (elems.length) {

Fiddle

关于javascript - 如果数据不存在则追加到表上 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20418516/

相关文章:

php - 用 PHP 打印成 Javascript

php - 从 php echo 输出创建一个 Javascript 数组

javascript - 让 JavaScript 中的 Emojis 返回长度为 1

javascript - IP 到国家/地区、城市、纬度、语言 javascript 服务

javascript - jquery Accordion 在页面加载时默认折叠

javascript - 将EditorJs文本编辑器json转换为html元素的最佳方法是什么?

javascript - androidInterface 未定义。是什么赋予了?

javascript - 获取旋转后的 div 的实际 Left,Top 位置

javascript - 获取子元素的总宽度

jquery - jquery off/unbind 等是否递归地将所有事件分离到当前选择器和子级?