Обработка ответов мобильной формы Jquery

#ajax #forms #jquery-mobile #jquery-validate

#ajax #формы #jquery-мобильный #jquery-проверка

Вопрос:

У меня есть простая регистрационная форма с использованием Jquery mobile и jquery-validate.

Если пользователь вводит правильное имя пользователя и пароль, я перенаправляю их на их панель мониторинга. Если они пропускают поле, проверка на стороне клиента обнаруживает его.

Моя проблема заключается в том, что проверка на стороне сервера отклоняет регистрацию пользователя. Например, имя пользователя полностью готово.

В этом случае я отображаю страницу на сервере с сообщением об ошибке.

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

Я предполагаю, что на странице одновременно есть два элемента с одинаковым идентификатором. Таким образом, старая форма снова выполняет проверку, а затем удаляется.

Как мне с этим справиться?

Вот сценарий

 $('#registerPage').live('pagecreate', function (event) {
    $("#registerForm").validate({
        rules: {
            username: "required",
            password: "required",
            confirmPassword: {
                required: true,
                equalTo: "#password"
            }
        }
    });
});
  

Ответ №1:

Исправлено путем использования новой страницы в качестве контекста для селектора проверки.

 var rps = rps || {};
rps.register = rps.register || {};
rps.register.validate = function (context) {
    $("#registerForm", context).validate({
        rules: {
            username: "required",
            password: "required",
            confirmPassword: {
                required: true,
                equalTo: "#password"
            }
        }
    });
};

$(document).on('pageshow', '#registerPage', null, function (event, ui) { rps.register.validate(); });
$(document).on('pagehide', '#registerPage', null, function (event, ui) { rps.register.validate(ui.nextPage); });