javascript security dojo

javascript - Comprobación de contraseñas en dojo



dojo js (3)

Quiero comprobar que dos contraseñas son las mismas usando Dojo.

Aquí está el HTML que tengo:

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

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

<p > Confirmar: <input type="password"
name="password2"
id="password2"
dojoType="dijit.form.ValidationTextBox"
required="true"
invalidMessage="This password doesn''t match your first password" /
<input type="password"
name="password2"
id="password2"
dojoType="dijit.form.ValidationTextBox"
required="true"
invalidMessage="This password doesn''t match your first password" /
<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" > Guardar </div >

</form >

Aquí está el JavaScript que tengo hasta ahora:

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

Gracias por tu ayuda. Podría hacer esto en JavaScript puro, pero estoy tratando de encontrar la forma Dojo de hacerlo.


¡Lo he resuelto!

Esta página en el foro de Dojo fue útil.

Cambié el HTML para la contraseña de confirmación a:

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

La única diferencia es el parámetro del validador agregado.

Y creé la siguiente función de JavaScript:

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

Creo que también puede usar el parámetro del validador para crear expresiones regulares contra las que probar, pero la documentación no es muy clara.



Esto te acercará mucho más

  • Al establecer intermediateChanges = false, el validador se ejecuta con cada pulsación de tecla.
  • el objeto de restricción de validación de dijit se pasa a su validador. Use esto para pasar la otra entrada de contraseña
  • dijit.form.Form llama automáticamente a isValid () en todos sus dijits secundarios cuando se envía, y cancela la presentación si no todos validan. Pensé que los inválidos recibirían su mensaje de error, pero no es así. Eso queda como un ejercicio para el lector ;-)

la función de validación:

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; }

y los objetos de entrada:

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