在道场进行密码检查

时间:2008-11-21 11:36:09

标签: javascript security dojo

我想使用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 id="form" action="." dojoType="dijit.form.Form" /

这是我到目前为止的JavaScript:

  

<p

感谢您的帮助。我可以用纯JavaScript做到这一点,但我试图找到Dojo的做法。

3 个答案:

答案 0 :(得分:4)

这会让你更加接近

  • 设置intermediateChanges = false可以在每次按键时保持验证程序运行。
  • 验证dijit的约束对象被传递给它的验证器。使用此方法传入其他密码条目
  • dijit.form.Form会在提交时自动调用所有子dijit上的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 :(得分:2)

更简单,使用预先编写的Dojox小部件 dojox.form.PasswordValidator

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

它可以直接开箱即用!

答案 2 :(得分: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函数:

  

<p

我认为您也可以使用验证器参数来创建要测试的正则表达式,但documentation不是很清楚。