#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); });