Представьте, что у вас есть форма, в которой вы переключаете видимость нескольких полей. И если поле не отображается, вы не хотите, чтобы его значение было в запросе.
Как вы справляетесь с этой ситуацией?
Установка для элемента формы значения disabled остановит его отправку на сервер, например:
<input disabled="disabled" type="text" name="test"/>
В javascript это будет означать что-то вроде этого:
var inputs = document.getElementsByTagName('input');
for(var i = 0;i < inputs.length; i++) {
if(inputs[i].style.display == 'none') {
inputs[i].disabled = true;
}
}
document.forms[0].submit();
В jQuery:
$('form > input:hidden').attr("disabled",true);
$('form').submit();
:input
вместо того , чтобыinput
вы также можете легко отключить всеselect
иtextarea
элементыattr("disabled", true)
вы должны использоватьprop("disabled", true)
api.jquery.com/prop.prop()
вместо.attr()
. Проверка и / или настройка с помощью.attr()
в некоторых случаях возвращает нежелательные результаты. Пожалуйста, прочтите документацию jQuery, прежде чем комментировать, о чем имел в виду Йорч.Вы можете использовать javascript для установки отключенного атрибута. Событие нажатия кнопки «отправить», вероятно, лучшее место для этого.
Однако я бы не советовал вообще этого делать. Если возможно, вам следует отфильтровать свой запрос на сервере. Так будет надежнее.
источник
Если вы хотите отключить все элементы или определенные элементы в скрытом родительском элементе, вы можете использовать
$("div").filter(":hidden").children("input[type='text']").attr("disabled", "disabled");
В этом примере http://jsfiddle.net/gKsTS/ отключаются все текстовые поля в скрытом div
источник
Что о:
$('#divID').children(":input").prop("disabled", true); // disable
а также
$('#divID').children(":input").prop("disabled", false); // enable
Чтобы переключить все дочерние входы (выбор, флажки, ввод, текстовые поля и т. Д.) Внутри скрытого div.
источник
Одно очень простое (но не всегда самое удобное) решение - удалить атрибут name - стандарт требует, чтобы браузеры не отправляли безымянные значения, и все браузеры, которые я знаю, соблюдают это правило.
источник
Я бы либо удалил значение из ввода, либо отделил объект ввода от DOM, чтобы он не существовал для публикации в первую очередь.
источник