2

Я создаю страницу, которая программно заполняет форму, содержащую виджеты dojox.form.ValidationTextBox на основе данных, переданных с сервера. Эти виджеты должны быть проверены перед отправкой формы, но в настоящее время у нас нет способа сообщить серверу ограничения проверки.Сериализация объектов профиля dojox.validation.check

Сериализация объекта профиля, используемого с dojox.validate.check, кажется наилучшим образом подходящим, но структура не полностью совместима с сериализацией. Объект профиля передается dojox.validation.check должен иметь следующий формат:

profile: { 
     required: [fieldName1], 
     constraints: { 
      fieldName1: [[validationFunc1, constraintArg1, constraintArg2], [validationFunc2, constraintArg3, constraintArg4]] 
      fieldName2: validationFunc3 
     } 
     . 
     . 
     . 
} 

Поскольку объект профиля содержит функции, мы не хотим, чтобы использовать его как есть. Я рассматривал просто сериализацию имени функции для использования вместо самой функции, но это привело бы к некоторой узкой связи на стороне клиента, поскольку не предполагается, что имена глобальных переменных не будут использоваться с загрузчиком dojo AMD.

Существует ли более стандартный способ связывания (предпочтительно с додзё) ограничений проверки подлинности между клиентом и сервером?

ответ

2

Профиль проверки dojox.validate.check не позволяет указать пользовательские недопустимые сообщения поля. Например, предположим, что вы используете dojox.validate.isText как одну функцию проверки, предоставляя ей такие ограничения, как «maxlength» и «minlength», вы не получите пользовательские «недействительные» сообщения, которые отображали бы что-то вроде «не может быть больше, чем длинные символы ", если он слишком длинный, или" должен быть длиннее символов длиной "без значительного количества кода для управления этим.

Я бы посоветовал посмотреть другие рамки проверки JavaScript на стороне клиента, такие как Regula или JQuery Validator, и использовать формат обмена ограничениями полей, который лучше работал бы с одним из этих решений.

Смежные вопросы