Проверка в мобильном приложении
Я столкнулся с некоторой проблемой при реализации проверки в представлении.
Я пытаюсь следовать одному из примеров Devextreme на сайте. http://js.devexpress.com/Demos/WidgetsGallery/
Ошибка, которую я получаю "Uncaught TypeError: Невозможно прочитать свойство 'validate' of undefined". нажимая кнопку Готово.
Это код, который я использую:`Имя пользователя: Пароль: Введите пароль еще раз:
PaMobile01.popup = function (params, viewInfo) {
"use strict";
var openTabsAsRoot = viewInfo.layoutController.name === "split",
isReady = $.Deferred();
function handleViewShown() {
loadopetions();
}
function validateAndSubmit(params) {
var result = params.validationGroup.validate();
if (result.isValid) {
DevExpress.ui.notify({
message: "You have submitted the form",
position: {
my: "center top",
at: "center top"
}
}, "success", 3000);
}
}
function loadopetions() {
$("#tbx_userneme").dxTextBox({
placeholder: 'Required',
}).dxValidator({
validationRules: [{
type: "required",
message: "City is required"
}, {
type: "pattern",
pattern: "^[a-zA-Z]+$",
message: "Do not use digits in the City name."
}, {
type: "pattern",
pattern: "^.{2,}$",
message: "City must have at least 2 symbols"
}]
});
$("#tbx_password").dxTextBox({
placeholder: 'Required',
}).dxValidator({
validationRules: [{
type: "required",
message: "City is required"
}, {
type: "pattern",
pattern: "^[a-zA-Z]+$",
message: "Do not use digits in the City name."
}, {
type: "pattern",
pattern: "^.{2,}$",
message: "City must have at least 2 symbols"
}]
});
$("#tbx_repassword").dxTextBox({
placeholder: 'Required',
}).dxValidator({
validationRules: [{
type: "required",
message: "City is required"
}, {
type: "pattern",
pattern: "^[a-zA-Z]+$",
message: "Do not use digits in the City name."
}, {
type: "pattern",
pattern: "^.{2,}$",
message: "City must have at least 2 symbols"
}]
});
}
function handlefinish() {
validateAndSubmit(params);
}
return {
isReady: isReady.promise(),
viewShown: handleViewShown,
openTabsAsRoot: openTabsAsRoot,
handlefinish: handlefinish
}
};
1 ответ
Функция, которая вызывает проверку, должна получить аргумент params. Посмотрите, как это делается в учебнике:
$("#button").dxButton({
text: "Submit",
type: "success",
onClick: validateAndSubmit
});
Библиотека обрабатывает этот объект params. Теперь в вашем коде вы скрываете ту функцию, которую ожидает библиотека handlefinish
который не имеет аргументов. Вы можете добавить params
в качестве параметра к определению функции:
function handlefinish(params) {
validateAndSubmit(params);
}
Или верните саму эту функцию:
return {
isReady: isReady.promise(),
viewShown: handleViewShown,
openTabsAsRoot: openTabsAsRoot,
validateAndSubmit: validateAndSubmit
}
Также посмотрите, как вы управляете этим модулем PaMobile01.popup
функции, попробуйте следовать учебнику.
ОБНОВИТЬ:
Посмотрите документацию для повторного подтверждения пароля: Comparerule
Согласно документам, вам нужно добавить правило валидации в валидатор #tbx_repassword
:[{ type: 'compare', comparisonTarget: getPassword }]
где getPassword - это функция типа:
function getPassword(){
return document.getElementById('tbx_password').value;
}