jQuery: проверьте, существует ли уже строка таблицы, содержащая определенные значения - PullRequest
10 голосов
/ 07 сентября 2010

У меня есть скрипт jQuery, который добавляет строку в таблицу. Короче говоря, пользователь может выбрать значение в раскрывающемся меню, а затем ввести «х» количество месяцев и нажать «добавить», что добавляет строку в таблицу. Например, следующая строка добавляется пользователем:

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

Теперь, если пользователь снова выполняет ту же операцию, мне нужно остановить процедуру и предупредить его, что он пытается добавить дублирующее значение. Как - используя jQuery - я могу проверить, существует ли уже упомянутая строка, где первый и второй <td> элементы имеют то же значение, что и данные, которые он пытается добавить? Причина, по которой я говорю только первый и второй элементы <td>, заключается в том, что в строке есть другие элементы <td>, но они содержат скрытые поля, которые отправляют вновь добавленные данные в сценарий на стороне сервера, поэтому я бы хотел проверка максимально короткая и простая.

Если это поможет, идентификатор таблицы будет #tblspecializations

Большое спасибо за ваш вклад.

Ответы [ 3 ]

20 голосов
/ 07 сентября 2010

Вы можете использовать : содержит () :

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

- Пример

Beоднако помните, что : contains () вернет элемент, если данная строка будет найдена в любом месте текста элемента.

2 голосов
/ 07 сентября 2010

Я бы посоветовал вам хранить ваши данные в некоторой структуре данных (например, (ассоциативный) массив). Таким образом вы будете проверять данные в структуре, а не в DOM.

1 голос
/ 07 сентября 2010

Короче говоря, следующий код в обработчике click() должен помочь вам в вашей ситуации;Вы можете увидеть весь код в действии :

$(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(), ваш брат, а именно второй столбец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...