2008-11-21 2 views
3

Я хочу проверить, что два пароля одинаковы с Dojo.Проверка пароля в dojo

Вот HTML у меня есть:

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

<p> Пароль: <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"> Сохранить </div>

</form>

Вот JavaScript У меня до сих пор:

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

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

ответ

4

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

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

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


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> 
1

Я решил!

Это page on the Dojo forum было полезно.

Я изменил 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();
}

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

+0

Я думаю, что решение Эд принимает во внимание множественные ограничения и является более полным решением вопроса. – 2009-12-23 18:08:15

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