以编程方式使用dojox.form.Password验证

时间:2011-12-22 01:23:02

标签: dojo

我正在构建注册表并计划使用dojox.form.PasswordValidation来验证输入的密码是否相同。有没有办法以编程方式使用dojox.form.PasswordValidation?如果我这样做:

<div id="sample">
    <input type="password" pwType="new" />
    <input type="password" pwType="verify" />
</div>

<script>
    var a = new dojox.form.PasswordValidation({}, "sample");
</script>

上面的代码按预期工作,但我想剥离那些“pwType”标记并仅创建纯HTML标记。如果我这样做,我应该在哪里放“pwType”?

P.S。我正在使用Dojo 1.6

2 个答案:

答案 0 :(得分:0)

不幸的是,看起来这个小部件与最近的更改并不是最新的,其中dojo尝试将所有无效的html属性移动到有效的data- *属性中。在查看该窗口小部件的postCreate方法时,它的代码位于其中间:

dojo.forEach(["old","new","verify"], function(i){
    widgets.push(dojo.query("input[pwType=" + i + "]", 
                            this.containerNode)[0]);
}, this);

之后它确保它找到了必要的输入,否则会引发错误。

因此,如果您想使用pwType属性之外的其他内容,那么您可能必须覆盖此小部件的postCreate方法以查询其他内容,例如:

dojo.query("input[data-dojo-password-type=" + i + "]")

然后您可以在data-dojo-password-type而不是pwType中指定值,如下所示:

<div id="sample">
    <input type="password" data-dojo-password-type="new" />
    <input type="password" data-dojo-password-type="verify" />
</div>

答案 1 :(得分:0)

如下:

var theDiv = dojo.create("div", {id: "sample"}),
    theNewPass = dojo.create("input", {type: "password", pwType: "new"}, theDiv, "last"),
    theVerifPass = dojo.create("input", {type: "password", pwType: "verify"}, theDiv, "last"),
    a = new dojox.form.PasswordValidation({}, "sample")
;