0

我正在使用 jquery 动态添加和删除表的行。像这样的东西。

我的问题是,我如何检查表中是否已经存在条目(BOTH output typeAND )?output number这样我就不会添加 2 个或更多类似条目,而是更新现有条目,或者只是忽略或发出警报...

我对检查部分一无所知。需要数据库吗??

if (textInput== ??existing entry??)
alert ("you have entered that output number for that output type");
// quit the codes below or something?
4

3 回答 3

4
   function isExist(newEntry){
     return Array.from($('tr[id*=output_newrow]'))
              .some(element => $('td:nth(2)', $(element)).html() === newEntry );
    }

newEntry是要添加的输入文本的值 Then :

$('.add').click(function () {

    textInput = "";
    $('.TextInput').empty();
    textInput =  $(this).prev('.TextInput').val();

    if(isExist(textInput)){
     alert("you have entered that output number for that output type")
    }else{

         //.....insert code
    }
})

演示:

http://jsfiddle.net/abdennour/MKfLU/27/

“但它适用于不同的选择选项,但也适用于相同的输入数字......我可以做 isExist (textInput)AND(type) 吗?” 如果你想在测试中嵌入类型:

function isExistx(newEntry,outtype){

  return Array.from($('tr[id*=output_newrow]')).some( el => 
    ( $('td:nth(1)',$(el)).html() === outtype ) && ($('td:nth(2)',$(el)).html() === newEntry)
  ); 

}

然后 :

  if(isExistx(textInput,type)){
        alert('you have entered that output number for that output type')
    }else {

         $('#status_table tr:last').after(str);
    }

演示

http://jsfiddle.net/abdennour/MKfLU/29/

于 2013-04-25T04:29:15.293 回答
3

尝试

var flag = false;
$('#status_table tbody').find('tr').each(function(){
    var $this = $(this);
    if(textInput == $('td:eq(2)', $this).text() && type == $('td:eq(1)', $this).text()){
        flag = true;
        return false;
    }
});
if(flag){
    alert('exists');
    return;
}

演示:小提琴

于 2013-04-25T04:18:47.267 回答
2

在添加 时<td>,您可以data-unique-identifier使用类型和数字的组合为其添加属性。

$td.data('unique-identifer', 'type: ' + type + 'number: ' + number);

然后在添加另一行之前,您可以使用 jQuery 查看是否存在与相同唯一标识符匹配的任何行。

var uid = 'type: ' + type + 'number: ' + number;
if ($('[data-unique-identifer=' + uid + ']').length > 0) {
    // already exists
}

或者,您可以将信息保留在 DOM 之外,只维护您添加的信息的 javascript 数组。

添加新行时:

myExistingRows.push({
    type: type,
    number: number
});

并在添加之前查看一行是否已经存在:

function doesRowExist(type, number) {
    for (var index = 0; index < myExistingRows.length; index++) {
        var row = myExistingRows[index];
        if (row.type === type && row.number === number) {
            return true;
        }
    }
    return false;
)

演示:http: //jsfiddle.net/mchail/MKfLU/6/

于 2013-04-25T04:19:02.887 回答