Я столкнулся с чем-то вроде проблемы. Вот краткое объяснение.
У меня есть 12 флажков на стандартной форме. То, что я должен сделать, является циклом через каждого из них, и учитесь, которые проверяются и которые неконтролируемы.
Используя это, я могу затем создать строку, которая я затем ввожу в поле базы данных. Вот пример.
(Check1 - проверенный)
(Check2 - не проверенный)
(Check3 - проверенный)
1,0,1
До сих пор у меня есть этот бит кода.
$('input[type=checkbox]').each(function () {
if (this.checked) {
console.log($(this).val());
}
});
Это работает отлично за исключением того, что это только возвращает проверенные, не все.
Извините за newb вопрос. Я довольно плохо знаком с jQuery.
Чтобы построить строку результата именно в том формате, который вы показываете, вы можете использовать следующее:
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);
Вы можете получить все отмеченные флажками:
var boxes = $(":checkbox:checked");
И все не отмеченные флажками:
var nboxes = $(":checkbox:not(:checked)");
Вы можете просто прокрутить одну из этих коллекций и сохранить эти имена. Если что-то отсутствует, вы знаете, что оно либо было, либо не было отмечено галочкой. В PHP, если у вас есть массив с проверенными именами, вы можете просто сделать in_array()
запрос, чтобы узнать, должен ли какой-то конкретный блок быть отмечен позднее.
jQuery также имеет serialize метод, который будет поддерживать состояние элементов управления вашей формой. Например, пример, приведенный на сайте 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,
к строке.