Попробуйте добавить обработчик отправки в форму:
onClick='return frmSubmit()'
В этом обработчике вы сначала сериализуете данные формы и отправляете их в сценарий проверки. Обязательно return false
после выдачи запроса, так как это делается асинхронно. В ответном обратном вызове вы реализуете следующее: если в ответе указано, что ввод действителен, вы программно отправляете форму с .submit()
-методом. Однако, если ответ показывает, что что-то не так (вам необходимо предоставить отзыв в формате JSON), приложите к форме конструктивный отзыв, чтобы пользователь мог прочитать.
Не забудьте перехватить событие нажатия клавиши и запретить отправку формы при нажатии клавиши Enter, поскольку она будет обходить функцию проверки.
И, хм, одно предложение: может быть, лучше начать все проверки на стороне клиента, чего обычно достаточно. Вы, наверное, слышали, что проверку на стороне клиента можно обойти, поэтому все еще существует необходимость в проверке на стороне сервера. Тем не менее, я всегда чувствую, что если пользователь решит серьезно поработать с системой, то нет необходимости предоставлять конструктивную обратную связь. Достаточно простого сообщения, указывающего на ошибку. Итак, сначала проверьте ввод с простым Javascript. Если что-то не так, оставьте отзыв. Однако, если сервер получает неверный ввод (что означает, что проверка на стороне клиента была обойдена), просто уведомите пользователя, что он не прошел.