Используйте проверку ajax с отправкой javascript в модальном окне nyroModal
-
20-09-2019 - |
Вопрос
У меня есть форма (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, чтобы остановить выполнение.
К