Проверка в мобильном приложении

Я столкнулся с некоторой проблемой при реализации проверки в представлении.

Я пытаюсь следовать одному из примеров 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;
}
Другие вопросы по тегам