Я столкнулся с небольшой проблемой. Вот краткое объяснение.
У меня на стандартной форме 12 флажков. Что мне нужно сделать, так это пройтись по каждому из них и узнать, какие из них отмечены, а какие нет.
Используя это, я могу затем создать строку, которую затем ввожу в поле базы данных. Вот пример.
(Check1 - проверено)
(Check2 - не проверено)
(Check3 - проверено)
1,0,1
Пока что у меня есть этот фрагмент кода.
$('input[type=checkbox]').each(function () {
if (this.checked) {
console.log($(this).val());
}
});
Он работает отлично, за исключением того, что возвращает только отмеченные, а не все.
Извините за новый вопрос. Я новичок в jquery.
Ответы:
Чтобы построить строку результата точно в том формате, который вы показываете, вы можете использовать это:
var sList = ""; $('input[type=checkbox]').each(function () { sList += "(" + $(this).val() + "-" + (this.checked ? "checked" : "not checked") + ")"; }); console.log (sList);
Однако я согласен с @SLaks, я думаю, вам следует пересмотреть структуру, в которой вы будете хранить это в своей базе данных.
РЕДАКТИРОВАТЬ : Извините, я неправильно прочитал формат вывода, который вы искали. Вот обновление:
var sList = ""; $('input[type=checkbox]').each(function () { var sThisVal = (this.checked ? "1" : "0"); sList += (sList=="" ? sThisVal : "," + sThisVal); }); console.log (sList);
источник
1
s и0
s.Использование селекторов
Вы можете получить все отмеченные флажки следующим образом:
var boxes = $(":checkbox:checked");
И все не проверено вот так:
var nboxes = $(":checkbox:not(:checked)");
Вы можете просто просмотреть любую из этих коллекций и сохранить эти имена. Если что-то отсутствует, вы знаете, что это было проверено или нет. В PHP, если у вас есть массив имен, которые были проверены, вы можете просто сделать
in_array()
запрос, чтобы узнать, следует ли проверять какой-либо конкретный флажок позже.Сериализовать
jQuery также имеет метод сериализации, который будет поддерживать состояние элементов управления вашей формы. Например, пример, представленный на веб-сайте jQuery, следующий:
single=Single2&multiple=Multiple&multiple=Multiple3&check=check2&radio=radio2
Это позволит вам сохранить информацию о том, какие элементы были проверены.
источник
Вы можете просмотреть все флажки, написав
$(':checkbox').each(...)
.Если я правильно понял ваш вопрос, вы ищете следующий код:
var str = ""; $(':checkbox').each(function() { str += this.checked ? "1," : "0,"; }); str = str.substr(0, str.length - 1); //Remove the trailing comma
Этот код будет перебирать все флажки и добавлять либо
1,
или0,
к строке.источник
Я не думаю, что достаточно времени было уделено рассмотрению схемы, поднятому в исходном сообщении. Итак, вот что нужно учесть новичкам.
Допустим, вы создали это решение. Все ваши второстепенные значения объединяются в одно значение и хранятся в базе данных. Вы действительно экономите [немного] места в своей базе данных и немного времени на кодирование.
Теперь давайте представим, что вы должны выполнять частую и простую задачу добавления нового флажка между текущими флажками 3 и 4. Ваш менеджер по разработке, заказчик, все, кто ожидает, что это будет простое изменение.
Итак, вы добавляете флажок в пользовательский интерфейс (простая часть). Ваш циклический код уже будет объединять значения независимо от количества флажков. Вы также полагаете, что поле вашей базы данных - это просто varchar или другой строковый тип, так что это тоже должно быть хорошо.
Что происходит, когда клиенты или вы пытаетесь просмотреть данные до изменения? По сути, вы сериализуете слева направо. Однако теперь значения после 3 отличаются на 1 символ. Что вы собираетесь делать со всеми имеющимися у вас данными? Собираетесь ли вы написать приложение, вытащить все это обратно из базы данных, обработать, чтобы добавить значение по умолчанию для новой позиции вопроса, а затем сохранить все это обратно в базу данных? Что произойдет, если у вас будет несколько новых значений с разницей в неделю или месяц? Что, если вы переместите местоположения и jQuery обработает их в другом порядке? Все ваши данные закрыты и должны быть повторно обработаны, чтобы переупорядочить их.
Вся концепция НЕ обеспечивать тесные отношения «ключ-значение» - лудакрис, и рано или поздно у вас возникнут проблемы. Тем из вас, кто задумывается об этом, пожалуйста, не надо. Другие предложения по изменению схемы в порядке. Используйте дочернюю таблицу, дополнительные поля в основной таблице, таблицу вопросов и ответов и т. Д. Просто не храните немаркированные данные, если структура этих данных может измениться.
источник
$.extend($.expr[':'], { unchecked: function (obj) { return ((obj.type == 'checkbox' || obj.type == 'radio') && !$(obj).is(':checked')); } }); $("input:checked") $("input:unchecked")
источник