#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть таблица с функцией флажка checkall / uncheckall, и таблица имеет и некоторые поля ввода, такие как текстовые поля, выпадающие списки. Пользователь должен установить хотя бы один флажок для обработки данных в таблице. Это работает нормально. Например, таблица имеет 3 строки, и пользователь устанавливает любой флажок и нажимает кнопку отправки, после чего оставшиеся две строки таблицы должны быть удалены и не отправлены. Я попробовал с приведенным ниже.
$("input:not(:checked)").each(function () {
$('input:not(:checked)').closest('tr').remove();
});
Но это удаление всей таблицы. Поэтому мне нужны только те строки таблицы, которые не отмечены, должны быть удалены. Любая помощь будет значительно оценена.
Комментарии:
1. можете ли вы создать рабочий демонстрационный код?
2. @Swati, вот это скрипка jsfiddle.net/1u45q97x
Ответ №1:
Предполагая, что вы не используете <th></th>
, ваша строка заголовка также была выбрана, потому что этот флажок также снят. Возможно, это будет причиной удаления всех строк. Консоль input:not:(:checked)
. Это даст четкое представление.
Редактировать: тогда попробуйте это, может быть, это сработает
$('#tableid').find('tr[input:not:(:checked)]').each(function()
{
$(this).remove();
}
Комментарии:
1. Нет, я использую <th></th> эта строка полностью удаляет таблицу
$('input:not(:checked)').closest('tr').remove();
2. это удаление данных таблицы, кроме заголовка таблицы
$('input:not(:checked)').parent('tr').remove();
Ответ №2:
Кажется, у меня все работает нормально: https://jsfiddle.net/r9zgvbqu/7 /
Два комментария, вы используете .each()
функцию, чтобы сделать что-то для всех выбранных элементов "input:not:(:checked)"
, но в этой функции выбираете все снова. итак, вы просто делаете одно и то же несколько раз. Вы можете пропустить этот шаг, а также пропустить .each()
$(this)
предложенную комбинацию -, выполнив straightup:
$("input:not(:checked)").closest('tr').remove();
Это удаляет все, что вы хотите.
РЕДАКТИРОВАТЬ: Ваша проблема в том, что вы выбираете все непроверенные входные данные, включая текстовые вводы и т.д. Вы можете указать тип ввода, который вы выбираете: input[type=checkbox]:not(:checked)
В общем, я бы не стал выбирать элементы по имени их тега. Лучше присвоить соответствующим флажкам класс, и вы можете выбрать их по классу.
Вот исправленная версия вашей скрипки: https://jsfiddle.net/927sdh8n /
И вот более простая и безопасная версия с использованием классов: https://jsfiddle.net/qz53wfxc /
Комментарии:
1. Спасибо за ваш ответ. Но некоторые способы также удаляют все строки таблицы из таблицы
2. Вот скрипка, которую я создал. jsfiddle.net/1u45q97x
3. Ваша таблица содержит больше входных данных, которые все не отмечены (поскольку они не являются флажками). попробуйте ввести [type=checkbox] . Я отредактирую свой ответ.