Используйте проверку ajax с отправкой javascript в модальном окне nyroModal - PullRequest
1 голос
/ 27 августа 2009

У меня есть форма (signup.php), которая появляется в окне nyroModal, когда я нажимаю кнопку:

<input value="Edit" class="nyroModal" type="button" href="signup.php">

Я бы хотел использовать некоторую форму проверки AJAX (например, чтобы проверить, было ли введено имя пользователя) перед отправкой формы.

Я имел в виду следующее: когда пользователь нажимает кнопку «отправить». он вызывает функцию javascript с onClick, которая отправляет обязательные поля в скрипт PHP, который возвращает действительные поля. Затем, если поле недействительно, оно уведомляет пользователя, но когда поле является действительным, оно отправляет форму через что-то вроде $('#formid').submit();. В теории достаточно просто.

НО

Проблема в том, что когда nyroModel получает новую форму из URL и создает div в DOM с содержимым в нем, Firefox полностью игнорирует любые теги <script>. Используя Firebug, я вижу, что он на самом деле получает теги <script> с ответом, но Firefox их игнорирует. Кроме того, я не могу создать функцию jQuery на странице, с которой вызывается модель, потому что при создании документа форма еще не существует в DOM.

Есть идеи, как решить эту проблему?

Ответы [ 2 ]

1 голос
/ 27 августа 2009

Попробуйте добавить обработчик отправки в форму:

onClick='return frmSubmit()'

В этом обработчике вы сначала сериализуете данные формы и отправляете их в сценарий проверки. Обязательно return false после выдачи запроса, так как это делается асинхронно. В ответном обратном вызове вы реализуете следующее: если в ответе указано, что ввод действителен, вы программно отправляете форму с .submit() -методом. Однако, если ответ показывает, что что-то не так (вам необходимо предоставить отзыв в формате JSON), приложите к форме конструктивный отзыв, чтобы пользователь мог прочитать.

Не забудьте перехватить событие нажатия клавиши и запретить отправку формы при нажатии клавиши Enter, поскольку она будет обходить функцию проверки.

И, хм, одно предложение: может быть, лучше начать все проверки на стороне клиента, чего обычно достаточно. Вы, наверное, слышали, что проверку на стороне клиента можно обойти, поэтому все еще существует необходимость в проверке на стороне сервера. Тем не менее, я всегда чувствую, что если пользователь решит серьезно поработать с системой, то нет необходимости предоставлять конструктивную обратную связь. Достаточно простого сообщения, указывающего на ошибку. Итак, сначала проверьте ввод с простым Javascript. Если что-то не так, оставьте отзыв. Однако, если сервер получает неверный ввод (что означает, что проверка на стороне клиента была обойдена), просто уведомите пользователя, что он не прошел.

0 голосов
/ 27 августа 2009

вы можете использовать что-то вроде:

onClick='javascript: return myValidationFuncion()

Где ваша функция будет проверять, является ли значение допустимым, то есть, позвоните туда через веб-службу. Если значения недействительны, просто верните false, чтобы остановить выполнение.

K

...