2013-07-01 3 views
0

У меня есть сайт, на котором есть несколько ссылок (hrefs), и каждая из этих ссылок показывает набор входов type = checkbox (которые генерируются из подкрепленных), когда вы нажимаете на кнопку ссылка показывает, что позволяет сказать, что 10 входов, другие становятся дисплеем: none; (по загрузке по умолчанию установлен только первый набор этих флажков) и с jquery, который я сделал, чтобы вы могли просто переключать, какие флажки вы хотите видеть.JQuery, создающий объект всех флажков

Теперь мне нужно создать объект, в котором я могу поместить все, что проверено, их имена и значения, поэтому, когда я нажимаю на кнопку, я могу отправить ее на бэкэнд через ajax.

Функция которым вызывает Аякс «и получает значения и название является»:

function Bada() { 

    var obj = $('.custom input[type="checkbox"]'); 


    var checkedCount = obj.filter(':checked').length; 
    var checkedInputs = obj.filter(':checked'); 
    console.log('The console is working'); 
    for(check in checkedInputs){ 
     console.log(checkedInputs[check].name); 
     console.log(checkedInputs[check].value); 
    } 
    delete window.checkedInputs; 
    delete window.obj; 

      $.ajax({ 
       url: "/getItems", 
       type: "post", 
       data : { form: childCount, count: checkedCount }, 
       success: function(responseText){ 

        alert('works'); 

       } 
      }) 
      //unfocus the button after the call to server, otherwise the marker stays in the text of the button as if that text is selected 
      $('.button').blur(); 

    } 

Проблемы я имею заключается в следующую: при загрузке страницы, и есть те начальные флажки по мнению (другая-х на дисплее: нет;), все работает, я получаю имя флажка и значения, , но как только я нажимаю на ссылку, и он устанавливает на дисплее другой набор флажков и ставит предыдущие на дисплее: none; , когда я снова нажимаю кнопку, вместо того, чтобы получать имена и/или значения отмеченных флажков, он отображает все предыдущие флажки (отмеченные и непроверенные, весь их список, который ранее был , а текущие показаны также, но полностью игнорирует, если что-либо проверено или не отмечено). Так что я думал, что я создаю объект, и он сохраняет эти значения, не перезаписывает их, но добавляет новые значения ранее и был полностью озадачен, почему вдруг он игнорирует фильтр, поэтому я попытался «опорочить» объект, поставив delete window.obj ;, но это ничего не делало. Так что здесь не так? И если есть какие-то советы в целом о том, что я написал, будем рады их услышать :) Спасибо!

+0

Здесь obj и checkedInputs не являются частью глобального объекта окна –

+0

У вас есть пример html, который мы могли бы увидеть, возможно [живая демонстрация] (http://jsfiddle.net/)? Помогите нам помочь вам. –

ответ

0

Входы не отправляются, когда скрыты. Его часть стандарта HTML. Форма отправленных входов только видимых объектов.

childCount не определен.

+1

Это неправда. Входы 'disabled' не отправляются, а' hidden', т. е. 'input type = 'hidden' ..' элементы. –

+0

правда, я запутался. –

+0

Не знаете, что вы имеете в виду при отправлении, если вы имеете в виду, что они не отправляются на сервер, то это не то, что я делаю здесь. Я пытаюсь построить и объект с этими входами, а затем отправить его. Все работает, пока я не пытаюсь создать этот объект из ранее отображаемого: none; флажки до сих пор (после нажатия ссылки): block ;.И jQuery видит эти входы, но затем фильтр игнорируется: check – Belhor

0

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

function Bada() { 

    var checkboxes= []; 
     $('.checkBoxClass').each(function(index){ 
      checkboxArray.push($(this).data('id')); 
     }); 
     var together = checkBoxArray.join(); 

     $.ajax({ 
      url  : '/getItems', 
      data : { 
        'someproperty'  : together 
      }, 
     success : function(response) { 
     console.log(response); 
     } ... 

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

Я использовал аналогичный метод, когда мне нужно было сохранить несколько проверенных/непроверенных параметров и отправить их через AJAX.

Дайте мне знать, если это вам поможет.

Смежные вопросы