отправить отключенные поля

Я знаю, что определенное поведение для веб-форм заключается в том, чтобы не отправлять отключенные поля … но это не определение, которое я хочу. Я хочу использовать ajax для отправки формы, и я хочу, чтобы она получала все поля, даже если они отключены. Я не хочу создавать обходной путь, когда я делаю поле «отключенным» … или должен взломать его, когда я включаю поля -> пост -> отключить.

возможно ли сделать ajaxSubmit () или serialize () захватить отключенные поля, поскольку он перемещается через DOM и захватывает значения? или есть другой плагин для сериализации, который может это сделать? или у кого-то есть мода, которую я могу сделать для одного из этих плагинов, чтобы заставить его работать?

или я обречен его взломать?

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

Редактирование. Вы можете легко написать функцию « serializeDisabled », итерацию по отключенным элементам формы, которые имеют атрибут имени и с помощью функции jQuery.param в конце, для генерации сериализованной строки:

(function ($) { $.fn.serializeDisabled = function () { var obj = {}; $(':disabled[name]', this).each(function () { obj[this.name] = $(this).val(); }); return $.param(obj); } })(jQuery); 

Почему бы просто не включить все запрещенные поля ввода непосредственно перед отправкой с использованием .removeAttr() и .submit() .

 $('#my_form').submit(function(){ $("#my_form :disabled").removeAttr('disabled'); }); 

Хорошо … возможно, я не задал свой вопрос достаточно ясно … но ответ, который я искал, здесь:

http://docs.jquery.com/Plugins:Forms#.val.28.29_becomes_.fieldValue.28.29

Я упомянул ajaxSubmit () в моем вопросе, который исходит из плагина jQuery Form … и внутри этого плагина есть метод, называемый fieldValue (), который принимает параметр, называемый «успешным». Если вы передадите «true», тогда плагин вернет то, что W3C определяет как «удачные» элементы управления (что исключает отключенные элементы управления). но если вы установите его на false, тогда он получит все значения, независимо от определения W3C.

Я знал, что это возможно, поскольку все подчинение контролируется подключаемым модулем и не имеет ничего общего с стандартами / определением HTML … Я просто просил узнать, был ли этот параметр уже доступен в этом подключаемом модуле или другом плагины. Он доступен в этом плагине, хотя поведение по умолчанию должно действовать как стандартный HTML-код

// jQuery (‘# container: input’). serializeAll ()

 (function($j) { $j.fn.serializeDisabled=function(){ var obj={}; $j(this).filter(':input:disabled').each(function(index,domElem){ var $this=$j(domElem); obj[domElem.name]=$this.val(); }); return $j.param(obj); }; $j.fn.serializeAll=function(){ $this=$j(this); return $this.filter(':input:enabled').serialize()+'&'+$this.serializeDisabled(); }; })(jQuery); 

Во-первых: Мне очень нравится ответ CMS. Гораздо проще. Но в случае, если это не лучший вариант …

Почему бы вам просто не использовать функцию JQuery, связанную с событием onsubmit формы, которое обходит форму и захватывает вход для всех s в форме и разрешает их, а затем отправляет форму? Вам нужно знать, отключен ли вход? Вы обеспокоены тем, что включение ввода приведет к изменению визуального внешнего вида таким образом, который касается пользователя?

В любом случае вы можете добавить что-то к элементам, которые вы активируете. Для стилизации добавьте class, который дает отключенным входам тот же вид, что и разрешенные входы. Если вам нужно знать, какие из них были отключены, добавьте что-либо к имени или самому значению, чтобы указать статус.

Из любопытства, когда вы когда-нибудь захотите отключить информацию? Если вход всегда отключен (что означает, что пользователь не установил его таким образом), вы уже не знаете значение? И если вход отключен пользователем, разве вы не обманчиво собираете эти данные?

Если значение отключено, потому что это что-то вроде «общего» поля, которое обновляется через js на основе других неинвалированных полей, я бы пошел с CMS, сделав его только для чтения.


Основываясь на вашем ответе на CMS:

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

Если это так, почему бы не настроить переключатель между скрытым вводом и поле выбора? Изначальное значение и имя для обоих входов будут одинаковыми, но если один из них включен, другой отключен. Таким образом, сценарий видит только один из двух входов, и поскольку у них одно и то же имя, он не попадает туда, откуда поступали данные.


 $('form').submit(function() { $('[disabled]').each(function(i) { d_name = $(this).attr("name"); d_val = $(this).val(); $(this).after( '
		      	

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

 $('#form').submit(function() { $('[disabled]').each(function(i) { var d_name = $(this).attr("name"); var d_val = $(this).val(); $(this).attr("disabled", false); }); return true; }); $('#form').submit(); 

Вы можете отключить входы и перед отправкой формы, которую вы можете повторно включить, чтобы форма включала их при отправке на серверную сторону