2011-04-26 1 views
0

Это, вероятно, самый простой для просмотра этой скрипку: http://jsfiddle.net/Ahfm7/4/Отключение и повторное включение динамических элементов формы с JQuery

только значения агента и расширения в раскрывающемся списке были реализованы в настоящее время.

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

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

  • Аналогичным образом, если вы выбираете опцию в первой строке, затем добавляете другую и удаляете ее, кнопка отправки остается отключенной.

Я просто задавался вопросом, знает ли кто-нибудь, как это исправить?

+3

Просто быть вежливым, не нужно быть нахальным о нем – martincarlin87

+0

Это похоже на простые проблемы, если вы написали js в скрипке - вы действительно не знаете, как исправить эти две проблемы? – Hogan

+0

Есть ли CSS, связанный с 'disabled' и' advancedsubmit' _classes_ на кнопке отправки? В противном случае я не вижу смысла добавлять/удалять эти классы. Кроме того, это не выглядит так, как опция 'extension' была реализована. Я вижу только «агент». –

ответ

1

Я начал очищать код. Я сократил 700 строк JS до чего-то более управляемого для SO, но вы должны понимать общую идею.

http://jsfiddle.net/mattball/5ubTe/

В целом:

  • избежать повторного запроса к DOM с помощью кэширования JQuery объектов
  • Stay DRY написав больше, меньше функций, которые содержат обычно повторно использовать логику (например, функции enableSubmitButton Я добавил)
  • Не забудьте использовать var
+0

спасибо, сайт jsfiddle, кажется, идет медленно в данный момент, так что может быть, но добавление (и удаление) выпадающих меню не работает.Был ли класс включенной кнопкой отправки только что добавленной? Кроме того, почему вы прокомментировали некоторые строки, которые необходимы? – martincarlin87

+0

Да, я сделал перерыв, так как jsFiddle работал довольно медленно. Я прокомментировал строки типа '$ (this) .next (" select [name = 'values'] option "). Remove();' потому что эта же логика уже была выполнена с помощью более ранней строки: '$ operands.next (" select.values ​​"). пустой()'. –

+0

Я вижу, но я не понимаю, почему эти две строки делают то же самое - очень похоже да, но они удаляют любые параметры, которые могут быть там для 2-го и 3-го выпадающих меню, значения которых заполняются выбором значения в первый список? – martincarlin87