3

Dojo を使用して、2 つのパスワードが同じであることを確認したいと考えています。

ここに私が持っている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 の方法でそれを行う方法を見つけようとしています。

4

3 に答える 3

4

これでかなり距離が縮まります

  • middleChanges=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>
于 2008-11-23T17:39:31.680 に答える
2

さらに簡単に、事前に作成されたDojoxウィジェットdojox.form.PasswordValidatorを使用します

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

それはあなたが箱から出してすぐに望むすべてをします!

于 2010-06-29T12:10:33.553 に答える
1

解決しました!

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

バリデーターパラメーターを使用して正規表現を作成してテストすることもできると思いますが、ドキュメントはあまり明確ではありません。

于 2008-11-21T12:55:50.113 に答える