Проблемы с динамической проверкой форм - PullRequest
0 голосов
/ 03 июня 2011

Справочная информация:

Я новичок в JS и Prototype, так что терпите меня.

У меня очень большая форма. Полная форма в настоящее время весит 233K. Примерно 400 элементов формы с разметкой, стилем и некоторыми пользовательскими JS. Он использует Prototype с «улучшениями» Jotform, которые весят 370K без сжатия. Это 600 КБ для любого, кто скиммирует это.

600K. И я привык называть его ProJo только для того, чтобы уменьшить вес чего-то, связанного с ним.

Он предназначен для использования в полевых условиях на мобильных телефонах и, возможно, на планшетах, поэтому я решил, что к лучшему или к худшему, так как некоторые разделы нужны только изредка, я бы вырезал их и добавлял их динамически по мере необходимости. Эта часть работает безупречно (с небольшими сбоями скрытия / показа, которые, как я полагаю, связаны с использованием существующих анимаций способом, для которого они не предназначены, но сейчас это не главное).

Что больше не работает, так это проверка формы. Похоже, что каждая форма и элемент CSS «собираются» при загрузке страницы, и все, что добавляется динамически, не включается в коллекцию.

Я видел в своих поисках, что это довольно распространенное явление, и, к сожалению, ни одно из решений не применимо к ProJo, или, где они могут, не дает мне достаточно места, чтобы кусаться. Это решение настолько близко, насколько я понял, но я не понимаю, как его применить, даже если это правильный ответ на мою проблему. Из того, что я понимаю, это относится к конкретным функциям, которые вы хотите применить ко всем элементам с момента их вызова. Проблема в том, что я не знаю, какую функцию вызывать.

Форма инициализируется с помощью JotForm.init () ;. Есть ли способ повторно инициировать? Это то, что Prototype будет делать, или это будет что-то, что существует, если оно существует, в расширениях Jotform? Если нет, то возможно ли это, и если да, то как мне это сделать?

Вчера я провел пару часов, выполняя кучу трассировок для функций, вызываемых в ProJo, используя отладчик chrome и добавляя точки останова как для сценария ProJo, так и для событий DOM, но из-за того, что я узнал, моя неопытность в языке ProJo, и делать отладку таким образом, я не мог понять это.

Вот ссылка на рассматриваемый jotform.js .

Если вам нужно больше кода, дайте мне знать ... Я близок к тому моменту, когда думаю, что может быть проще просто повторно реализовать валидацию и анимацию в jQuery. Честно говоря, я никогда не использовал jQuery ... только для чтения сравнений между jQuery и Prototype онлайн, но множество примеров, руководств, базы пользователей и готовых к запуску плагинов - огромная ничья. JotForm - это отличный способ быстро создать красивую форму с отличной функциональностью, но я думаю, что мои потребности идут немного дальше. К их чести, из того, что я видел, большинство, если не все, стилей сделано в CSS, и они только изменяют значения классов, чтобы изменить внешний вид формы в целях проверки.

Итак, подведем итоги: Prototype / JotForm (ProJo) «расширенная» форма, где элементы динамической формы не проверяются. Есть ли способ повторно запустить ProJo или вызвать какую-либо функцию, которая выполняет или вызывает только те функции, которые требуются (которые мне неизвестны)? Кто-нибудь думает / знает, стоит ли переделывать в jQuery?

Еще один вопрос, в стороне: моя методология ошибочна? Кто-нибудь еще реализовал такую ​​большую форму для мобильных решений? Каким был ваш опыт?

Спасибо

1 Ответ

0 голосов
/ 26 июня 2011

Вместо того, чтобы удалять элементы из формы, почему бы не спрятать их в «сводной секции»?Оберните разделы формы в div (или fieldset), затем используйте Element.hide / Element.show (или даже анимации свертывания / раскатывания из scriptaculous).Вы можете предварительно настроить форму с некоторыми из этих менее используемых разделов, которые уже скрыты, используя Element.hide в обработчике событий dom: загружен.Важным моментом является не отключение полей формы (или их удаление), тогда валидатор должен увидеть всю форму и работать.

Это метод, который я использовал в довольно сложном веб-приложении (используя мой собственныйгенератор / populator / validator / submitter (библиотека), это уменьшает сложность кода, потому что вся форма всегда там, и пользователи находят идею свертывания / развертывания довольно легкой для понимания.Он даже работает на iPhone и Android!

...