Есть ли способ отключить все поля (textarea / textfield / option / input / checkbox / submit и т. д.) в форме, сообщив только имя родительского div в jquery / javascript?
Обратите внимание, что при этом вы заставляете значения этих элементов «исчезать» при отправке формы - для сохранения значения сделайте их readOnly, а не отключенными.
Идея может состоять в том, чтобы скрыть / показать div перед элементами управления, которые разрешены / запрещены для нажатия, плюс стиль отключенных элементов управления с помощью css.
Jaider
Ответы:
261
Попробуйте использовать :inputселектор вместе с родительским селектором:
Могу ли я использовать это, чтобы установить все входы внутри div на значение 0?
jackson5
2
Я также хочу отключить <a> ... Мой <a> тоже
включился
7
Цитирование jQuery : поскольку: input является расширением jQuery и не является частью спецификации CSS, запросы, использующие: input, не могут воспользоваться преимуществами повышения производительности, обеспечиваемыми собственным методом DOM querySelectorAll (). Чтобы добиться максимальной производительности при использовании: input для выбора элементов, сначала выберите элементы с помощью чистого селектора CSS, затем используйте .filter (": input").
акме
2
@acme: согласен на 100%, но вопрос не дает никаких подсказок относительно того, какой селектор я мог бы отфильтровать. Единственная информация, которую мне дали, заключалась в том, что пользователь должен иметь возможность делать это с именем родителя,div и все. Если бы мне дали больше информации, я мог бы найти более эффективное решение.
Эндрю Уитакер
1
Используйте .prop () вместо .attr () (выше jquery 1.6)
это должно быть ('input, textarea, button'), все селекторы должны быть заключены в один набор кавычек. api.jquery.com/multiple-selector Делая это по-своему, вы отправляете несколько аргументов.
Иван Иванич
2
Это будет только найти вас входы, игнорируя текстовые области и кнопки. Селектор: input - это то, что нужно, но если вы хотите явно перечислить их, вам нужно будет использовать $('#mydiv').find('input, textarea, button').
Марк Хилдрет
1
... или просто $ ('# your-form'). children (). prop ('disabled', true);
Walv
@walv ваш код работает, только если все элементы формы являются единственными потомками формы. Find () находит все элементы в списке независимо от уровня происхождения. Эта строка кода верна, за исключением использования prop вместо attr для новых версий jquery.
Я использую функцию ниже в различных точках. Работает в элементах div или button в таблице, если используется правильный селектор. Просто ": кнопка" не будет повторно для меня.
Для меня принятый ответ не сработал, так как у меня были некоторые скрытые поля asp net, которые также были отключены, поэтому я решил отключить только видимые поля
//just to save the list so we can enable fields latervar list =[];
$('#parent-selector').find(':input:visible:not([readonly][disabled]),button').each(function(){
list.push('#'+this.id);});
$(list.join(',')).attr('readonly',true);
Если ваша форма внутри divпросто содержит элементы ввода формы, тогда этот простой запрос отключит каждый элемент внутри formтега:
<divid="myForm"><formaction="">
...
</form></div>
Тем не менее, он также отключит другие элементы form, кроме ввода , поскольку его эффекты будут видны только для элементов типа ввода, поэтому подходят в основном для всех типов форм!
Пожалуйста, исправьте ваше второе предложение. Кажется, он говорит, что ваш код отключит не входные элементы, но тогда он скажет, что он повлияет только на входные элементы. Пожалуйста, уточните ваш смысл. (Аккуратный трюк, кстати - хороший ответ)
readOnly
, а не отключенными.Ответы:
Попробуйте использовать
:input
селектор вместе с родительским селектором:источник
div
и все. Если бы мне дали больше информации, я мог бы найти более эффективное решение.источник
$('#mydiv').find('input, textarea, button')
.Для JQuery 1.6+, использовать
.prop()
вместо.attr()
,или
источник
источник
Просто эта строка кода отключит все элементы ввода
источник
Как насчет достижения этого, используя только атрибут HTML «отключен»
Просто включив отключенный в fieldset все поля внутри этого fieldset отключаются.
источник
Я использую функцию ниже в различных точках. Работает в элементах div или button в таблице, если используется правильный селектор. Просто ": кнопка" не будет повторно для меня.
источник
Следующее отключит все входные данные, но не сможет сделать это для класса btn, а также добавит класс для перезаписи отключить css.
класс CSS
источник
Для меня принятый ответ не сработал, так как у меня были некоторые скрытые поля asp net, которые также были отключены, поэтому я решил отключить только видимые поля
источник
Используйте класс CSS, чтобы предотвратить редактирование элементов Div
CSS:
JS:
Или добавьте имя класса в тег HTML. Это предотвратит редактирование элементов Div.
источник
Только тип текста
Только тип пароля
Только тип электронной почты
источник
Если ваша форма внутри
div
просто содержит элементы ввода формы, тогда этот простой запрос отключит каждый элемент внутриform
тега:Тем не менее, он также отключит другие элементы
form
, кроме ввода , поскольку его эффекты будут видны только для элементов типа ввода, поэтому подходят в основном для всех типов форм!источник