Проверка пароля в додзё

Я хочу проверить, что два пароля совпадают с помощью Dojo.

Вот HTML, который у меня есть:

<form id = "form" action = "." dojoType = "dijit.form.Form" />

<p>Password: <input type = "password"
name = "password1"
id = "password1"
dojoType = "dijit.form.ValidationTextBox"
required = "true"
invalidMessage = "Please type a password" /
></p>

<p>Confirm: <input type = "password"
name = "password2"
id = "password2"
dojoType = "dijit.form.ValidationTextBox"
required = "true"
invalidMessage = "This password doesn't match your first password" /
></p>

<div dojoType = "dijit.form.Button" onClick = "onSave">Save</div>

</form>

Вот код JavaScript, который у меня есть на данный момент:

var onSave = function() {
if (dijit.byId('form').validate()) { alert('Good form'); }
else { alert('Bad form'); }
}

Спасибо за вашу помощь. Я мог бы сделать это на чистом JavaScript, но я пытаюсь найти способ сделать это Dojo.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
0
11 114
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я решил это!

Этот страница на форуме Dojo был полезен.

Я изменил HTML-код подтверждения пароля на:

<p>Confirm: <input type = "password"
name = "password2"
id = "password2"
dojoType = "dijit.form.ValidationTextBox"
required = "true"
validator = "return theSame(this, dijit.byId('password1'));"
invalidMessage = "This password doesn't match your first password" /
></p>

Единственное отличие - добавленный параметр валидатор.

И я создал следующую функцию JavaScript:

function(dojoTxt1, dojoTxt2) {
return dojoTxt1.getValue() == dojoTxt2.getValue();
}

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

Я думаю, что решение Эда учитывает несколько ограничений и является более полным решением вопроса.

Tony Lenzi 23.12.2009 21:08

Ты прав. Я просто не собирался искать, потому что я решил проблему в достаточной мере для своих нужд, когда он ответил на нее.

Richard Garside 17.01.2010 18:07
Ответ принят как подходящий

Это сделает вас намного ближе

  • установка intermediateChanges = false заставляет валидатор работать при каждом нажатии клавиши.
  • объект ограничения проверки dijit передается его валидатору. Используйте это, чтобы передать другую запись пароля
  • dijit.form.Form автоматически вызывает isValid () для всех своих дочерних dijits при отправке и отменяет отправку, если они не все проверяются. Я думал, что недействительные получат сообщение об ошибке, но это не так. Это оставлено в качестве упражнения для читателя ;-)

функция проверки:


function confirmPassword(value, constraints)
{
    var isValid = false;
    if (constraints && constraints.other)  {
        var otherInput =  dijit.byId(constraints.other);
        if (otherInput) {
            var otherValue = otherInput.value;
            console.info("%s == %s ?", value, otherValue);
            isValid = (value == otherValue);
        }
    }
    return isValid;
}
function onsubmit()
{
    var p1 = dijit.byId('password1').value;
    var p2 = dijit.byId('password2').value;
    return p1 == p2;
}

и входные объекты:


<p>Password: <input type = "password"
    name = "password1"
    id = "password1"
    dojoType = "dijit.form.ValidationTextBox"
    required = "true"
    intermediateChanges=false
    invalidMessage = "Please type a password" /></p>

<p>Confirm: <input type = "password"
    name = "password2"
    id = "password2"
    dojoType = "dijit.form.ValidationTextBox"
    required = "true"
    constraints = "{'other': 'password1'}"
    validator=confirmPassword
    intermediateChanges=false
    invalidMessage = "This password doesn't match your first password" /></p>

Еще проще использовать предварительно написанный виджет Dojox, dojox.form.PasswordValidator.

http://docs.dojocampus.org/dojox/form/PasswordValidator

Он делает все, что вы хотите, прямо из коробки!

Другие вопросы по теме