jquery не видит checkbox

255
16 августа 2017, 20:19

Здравствуйте! Имеется такая форма:

<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. Или как-то по другому решить этот вопрос?

Answer 1

ак приятно видеть свой код на стаке)

Если правильно понял, тебе это нужно:

$(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);
}
READ ALSO
Преобразование элемента массива в Number

Преобразование элемента массива в Number

Возникла проблема при написании калькулятора

192
Как сделать анимацию, чтобы она начала работу при hover, и если убрать курсор все равно отработала полностью?

Как сделать анимацию, чтобы она начала работу при hover, и если убрать курсор все равно отработала полностью?

Пока приложу пример на Jquery, потом на чистом Javascript, если сами не догадаетесь как переделать

254
Как проверять парль по password_hash?

Как проверять парль по password_hash?

Делаю вход в админкуПароль хеширован password_hash

177