Цикл через флажки и количество каждый проверенный или неконтролируемый

Я столкнулся с чем-то вроде проблемы. Вот краткое объяснение.

У меня есть 12 флажков на стандартной форме. То, что я должен сделать, является циклом через каждого из них, и учитесь, которые проверяются и которые неконтролируемы.

Используя это, я могу затем создать строку, которая я затем ввожу в поле базы данных. Вот пример.

(Check1 - проверенный)
(Check2 - не проверенный)
(Check3 - проверенный)

1,0,1

До сих пор у меня есть этот бит кода.

$('input[type=checkbox]').each(function () {
           if (this.checked) {
               console.log($(this).val()); 
           }
});

Это работает отлично за исключением того, что это только возвращает проверенные, не все.

Извините за newb вопрос. Я довольно плохо знаком с jQuery.

75
задан stealthyninja 8 December 2012 в 12:59
поделиться

3 ответа

Чтобы построить строку результата именно в том формате, который вы показываете, вы можете использовать следующее:

var sList = "";
$('input[type=checkbox]').each(function () {
    sList += "(" + $(this).val() + "-" + (this.checked ? "checked" : "not checked") + ")";
});
console.log (sList);

Однако, я бы согласился с @SLaks, думаю, вам следует пересмотреть структуру, в которую вы будете хранить это в своей базе данных.

EDIT: Извините, я неправильно прочитал формат вывода, который вы искали. Вот обновление:

var sList = "";
$('input[type=checkbox]').each(function () {
    var sThisVal = (this.checked ? "1" : "0");
    sList += (sList=="" ? sThisVal : "," + sThisVal);
});
console.log (sList);
117
ответ дан 24 November 2019 в 11:30
поделиться

Используя селекторы

Вы можете получить все отмеченные флажками:

var boxes = $(":checkbox:checked");

И все не отмеченные флажками:

var nboxes = $(":checkbox:not(:checked)");

Вы можете просто прокрутить одну из этих коллекций и сохранить эти имена. Если что-то отсутствует, вы знаете, что оно либо было, либо не было отмечено галочкой. В PHP, если у вас есть массив с проверенными именами, вы можете просто сделать in_array() запрос, чтобы узнать, должен ли какой-то конкретный блок быть отмечен позднее.

Serialize

jQuery также имеет serialize метод, который будет поддерживать состояние элементов управления вашей формой. Например, пример, приведенный на сайте jQuery, выглядит следующим образом:

single=Single2&multiple=Multiple&multiple=Multiple3&check=check2&radio=radio2

Это позволит вам сохранить информацию, для которой элементы были проверены.

.
59
ответ дан 24 November 2019 в 11:30
поделиться

Вы можете проциклировать все флажки, написав $(':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, к строке.

.
16
ответ дан 24 November 2019 в 11:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: