Используйте проверку ajax с отправкой javascript в модальном окне nyroModal

StackOverflow https://stackoverflow.com/questions/1340134

Вопрос

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

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

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

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

НО

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

Есть идеи, как это решить?

Это было полезно?

Решение

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

onClick='return frmSubmit()'

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

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

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

Другие советы

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

onClick='javascript: return myValidationFuncion()

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

К

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top