Здравствуйте! Имеется такая форма:
<form name="formSocial" class="formSocial">
<div class="social col-md-12"><!-- Социальные сети-->
<label class="form-group col-md-8">Социальные сети</label>
<div class="col-md-12" style="margin-top: 50px">
<div class="col-md-2">
<label>Вконтакте:</label>
</div>
<div class="col-md-4">
<input class="form-control" name="1" type="text" placeholder="ссылка">
</div>
<div class="col-md-4">
<label>Выкл/Вкл</label>
<input type="checkbox" name="1">
</div>
</div>
....
</div>
И скрипт который достает данные из этой формы:
$('.saveSocial').on('click', function(){
var arr = $(".formSocial").serializeAnotherArray();
$.fn.serializeAnotherArray = function(){
var arr = $(this).serializeArray(),b=[],c=[];
$.each(arr,function(){
c.push(this.name.replace('[]',''),this.value);
if(c.length==4){
b.push(c);
c = [];
}
});
return b;
}
console.log(arr);
});
В результате хочу получить такой массив:
(4) ["1", "one", "1", "on"]
(4) ["2", "two", "2", "on"]
...
Если чекбокс не выбран метод serializeAnotherArray не видит его и пропускает. Получается массив типа такого:
["1", "one", "2", "two", "3", ""]
Читал что jquery
видит только отмеченные чекбоксы. Можно этого как-то избежать и если чекбокс не выбран сделать его по умолчанию off
. Или как-то по другому решить этот вопрос?
ак приятно видеть свой код на стаке)
Если правильно понял, тебе это нужно:
$(document).ready(function(){
$('.saveSocial').on('click', function(e){
var arr = $(".formSocial").serializeAnotherArray();
console.log(arr);
});
});
$.fn.serializeAnotherArray = function(){
var a = {};
$.each($(this).find('[name]'),function(){
var s = $(this),name = s.attr('name');
if(typeof a[name] == 'undefined') a[name] = [];
a[name].push(name,s.is(':checkbox')?(s.is(':checked')?'on':'off'):s.val());
});
return Object.values(a);
}
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Пока приложу пример на Jquery, потом на чистом Javascript, если сами не догадаетесь как переделать