2014-09-15 3 views
0

Поскольку флажки отправляют свое содержимое только тогда, когда они проверяются, но мой скрипт на стороне сервера нуждается в ala из них (отмеченные и непроверенные поля со значениями «Y» или «N»), мне нужно динамически заменяют поля формы флажка (их функциональные возможности) со скрытыми полями ввода с одинаковыми именами. Поэтому мне нужен сценарий jQuery, который будет делать следующее:Динамически подставляя флажки со скрытыми полями с помощью jQuery

  • для каждого поля ввода CheckBox на моей странице он должен динамически вставить скрытое поле ввода с тем же именем, как флажок
  • он должен добавить OnClick слушателю всех CheckBox полей, которые будут установленные предыдущие скрытое поле в «Y», когда флажок, и «N» иначе
  • удалить имя поля ввода CheckBox для того, чтобы избежать конфликта имен при передаче содержимого формы на сервер (не уверен, если это действительно необходимо)

так JQuery должен текущее состояние :

<input type="checkbox" name="name1" checked="checked" /> 
<input type="checkbox" name="name2" /> 

динамически подменять с:

<input type="hidden" name="name1" value="Y" /> 
<input type="checkbox" checked="checked" onclick="function()"/> 
<input type="hidden" name="name2" value="N" /> 
<input type="checkbox" onclick="function()"/> 

или заменить флажок поля со скрытыми полями с соответствующими значениями перед отправкой формы.

Функция() может быть неаменной и динамически назначена флажкам и изменять предыдущие скрытые поля с помощью «Y» или «N» в соответствии с состоянием флажка.

+0

Я буду считать вашей стороне сервера PHP, так как он помечен. Вам действительно нужна вся эта работа? Не можете ли вы просто установить «N», если значение флажка не было отправлено на сервер? Что-то вроде: '$ chkVal = isset ($ _ POST ['name1'])? 'Y': 'N'; ' – LcSalazar

+0

Спасибо за ваше логическое предложение, но это классический подход, я не могу его использовать, потому что для этого требуется, чтобы я знал заранее, что поле« name1 »должно появиться на серверном скрипте. Тогда я могу проверить, установлен ли он или нет. В моем случае я не знаю, какие поля появятся, и мне нужна явная отправка имен полей со значениями «Y» или «N». – sbrbot

+0

Не могли бы вы поделиться тем, что уже пробовали? А где вы застряли? – LcSalazar

ответ

0

Учитывая этот HTML

<input type="hidden" name="myname_hidden" value="" /> 
<input type="checkbox" name="myname"/> 

Вы можете использовать что-то вроде этого JQuery:

$("form").on('submit', function() { 
    $('input[type="checkbox"]').each(function(){ 
    var $t=$(this); 
    var isset = $t.prop('checked') ? 'Y' : 'N'; 
    $('input[name="'+$t.attr('name')+'_hidden"]').val(isset); 
    }); 
}); 
+0

Здесь я должен вручную вставить скрытое поле перед полем флажка. Моя нынешняя ситуация в том, что у меня есть только поле флажка. В конце концов я могу заменить поле флажка на скрытое поле перед отправкой. – sbrbot

+0

Я предположил из приведенного выше кода, что вы уже поняли, как добавить скрытое поле динамически, поэтому я не включил это как часть кода. Это должно произойти при загрузке страницы, где это произойдет при отправке формы. –

0

Как насчет создания массива из Y/N значений и отправки этого массива на сервер? Вы можете перебирать флажки, и если флажок установлен, вы добавляете nameAttribute:Y в массив. Если он не установлен, просто введите значение массива «N».

Вот пример:

function updateInputs() { 
    checkboxes.each(function() { 
     var name = this.name; 
     if (this.checked) { 
      myArray[name] = 'Y'; 
     } else { 
      myArray[name] = 'N'; 
     } 
    }); 
    myArray = []; 
} 
Смежные вопросы