Проверка пароля в додзе - PullRequest
3 голосов
/ 21 ноября 2008

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

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

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

<p> Пароль: <input type="password"<br> name="password1"<br> id="password1"<br> dojoType="dijit.form.ValidationTextBox"<br> required="true"<br> invalidMessage="Please type a password" /> </p>

<p> Подтвердите: <input type="password"<br> name="password2"<br> id="password2"<br> dojoType="dijit.form.ValidationTextBox"<br> required="true"<br> invalidMessage="This password doesn't match your first password" /> </p>

<div dojoType="dijit.form.Button" onClick="onSave"> Сохранить </div>

</form>

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

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

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

Ответы [ 3 ]

4 голосов
/ 23 ноября 2008

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

  • установка intervalChanges = 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.log("%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>
2 голосов
/ 29 июня 2010

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

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

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

1 голос
/ 21 ноября 2008

Я решил это!

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

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

<code><p> Подтвердите: <input type="password"<br> name="password2"<br> id="password2"<br> dojoType="dijit.form.ValidationTextBox"<br> required="true"<br> validator="return theSame(this, dijit.byId('password1'));"<br> invalidMessage="This password doesn't match your first password" /> </p>

Единственное отличие заключается в добавленном параметре validator .

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...