如果数据不存在,则在表上追加jQuery
Append on table if data not exist 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 = '';
});
在我的代码中发生的事情是,它没有在行进行过滤:包含。
我的代码出了什么问题?
首先,您必须测试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) {
固定小提琴
事实上,您想要的可能不是测试单元格是否"包含"该字符串,而是测试它是否只包含该字符串(即,当已经有"test 2"
时,您希望允许"test 21"
和"test"
)。要做到这一点,你可以这样过滤:
var elems = $('#test td').filter(function(){
return $(this).text()===text.value
});
if (elems.length) {
Fiddle
尝试:
$('#try').click(function () {
var test = $("#add").val();
var sample = $("#add2").val();
var flag = 0;
$("#test").find("tr").each(function () { //iterate through rows
var td1 = $(this).find("td:eq(0)").text(); //get value of first td in row
var td2 = $(this).find("td:eq(1)").text(); //get value of second td in row
if ((test == td1) && (sample == td2)) { //compare if test = td1 AND sample = td2
flag = 1; //raise flag if yes
}
});
if (flag == 1) {
alert('not allowed');
} else {
$('#test').append('<tr><td>' + test + '</td><td>' + sample + '</td></tr>');
}
$("#add").val("");
$("#add2").val("");
});
此处更新了fiddle
相关文章:
- 如何在jquery中停止在更改时追加值
- JQuery.on(“keydown”)追加到页面时不工作
- jQuery[button.class]未检测到用按钮追加行
- 使用jQuery'生成输入字段;s追加
- 正在从JQuery追加Laravel Blade
- jQuery-根据值在输入字段后追加图像
- jQuery动态使用.append()添加输入,但发布表单不是追加数据
- 追加Jquery后的Binding Click事件不起作用
- 追加JQuery元素和Angular
- 如果数据不存在,则在表上追加jQuery
- 正在停止永不结束的追加.jQuery
- 问题在于克隆、拼接、删除、追加 jquery 函数
- 在 HTML 中动态追加 Jquery
- 追加 jquery 不起作用
- 无法追加 jquery
- 未追加 jQuery json 值
- 添加内容使用追加- Jquery
- 追加jQuery工作,但onclick不工作
- 不工作追加(jQuery)在代码中
- 不能向新包装的元素追加jquery元素