jQuery и включенные / отключенные элементы управления

#jquery

#jquery

Вопрос:

Я откуда-то взял следующий скрипт, который очищает все элементы управления вводом в форме ‘mainFrm’:

 $(':text , textarea , #mainFrm').val('');
$('select option:nth-child(1) , #mainFrm').attr('selected', 'selected');
$(':checkbox , :radio , #mainFrm').removeAttr('checked');
  

Это работает действительно хорошо, но проблема в том, что очищает все элементы управления, независимо от того, что некоторые из них могут быть отключены. Я хотел бы очистить только включенные, оставив только отключенные. Как я могу это сделать? Я попытался изменить первую строку на

 $(':text , textarea , enabled , #mainFrm').val('');
$(':text:enabled , textarea , #mainFrm').val('');
$(':enabled, text , textarea , #mainFrm').val('');
  

но ни один из них не работал. Может кто-нибудь, пожалуйста, помочь мне с этим?

Ответ №1:

Вам нужно отфильтровать другие ваши селекторы:

 $('(input:text , textarea , #mainFrm):enabled')
  

Ответ №2:

Существует специальный селектор, как раз для этого случая: http://api.jquery.com/enabled-selector /

Комментарии:

1. Он знает об этом, но не знает, как это использовать.

2. $(‘:enabled’).val(«); должен работать. Добавление ‘text, textarea’ и всего прочего изменит каждый из этих типов, а не только включенные. Запятая в селекторе — это дополнительные селекторы, не основанные на тех, которые были до него.