2015-07-12 107 views
3

我正在从Polymer 0.5迁移到Polymer 1.0,我无法做一个简单的验证 - 密码和重新输入密码字段的经典场景。使用Polymer 1.0密码并重新输入密码验证

有聚合物0.5我有:

<paper-input-decorator id="passwordDecId" label="New password (8 caratteri almeno)" floatingLabel error="campo obbligatorio!"> 
    <input id="passwordId" onchange="validatePassword()" is="core-input" type="password" name="password" required pattern=".{8,32}"> 
</paper-input-decorator> 
<paper-input-decorator id="reenterPasswordDecId" label="Re-enter password (8 caratteri almeno)" floatingLabel error="campo obbligatorio!"> 
    <input id="reenterPasswordId" onchange="validatePassword()" is="core-input" type="password" name="reenterPassword" required pattern=".{8,32}"> 
</paper-input-decorator> 

和validatePassword功能是:

function validatePassword() { 
    var passwordDecorator = document.getElementById('passwordDecId'); 
    var passwordInput = document.getElementById('passwordId'); 
    var reenterPasswordDecorator = document.getElementById('reenterPasswordDecId'); 
    var reenterPasswordInput = document.getElementById('reenterPasswordId'); 
    var pass2 = reenterPasswordInput.value; 
    var pass1 = passwordInput.value; 

    if (pass1 != pass2) { 
     reenterPasswordInput.setCustomValidity("Passwords Don't Match"); 
    } else { 
     // empty string means no validation error 
     reenterPasswordInput.setCustomValidity(''); 
    } 

    passwordDecorator.isInvalid = !passwordInput.validity.valid; 
    reenterPasswordDecorator.isInvalid = !reenterPasswordInput.validity.valid; 
} 

和它的工作,但现在,已经迁移到聚合物1.0后,我没有使用纸输入 - 装饰器了,所以我想尽一切办法只有纸张输入:

<paper-input id="passwordId" onchange="validatePassword()" name="password" type="text" label="New password" auto-validate required pattern=".{1,32}" error-message="1 caratteri almeno"></paper-input> 

<paper-input id="reenterPasswordId" onchange="validatePassword()" name="reenterPassword" type="text" label="Re-enter password" auto-validate required pattern=".{1,32}" error-message="1 caratteri almeno"></paper-input> 

我不喜欢不知道如何更改validatePassword函数以在两个密码的长度大于1个字符时显示错误但值不同以及当用户按下提交按钮或输入焦点丢失时。

+0

不知道它仍然是实际的,但你可以实现自定义的验证,看这里如何做到这一点http://stackoverflow.com/questions/31955091/how-to-add-custom-validator-to-paper-input – Andrey

回答

3

这里一些示例如何使用聚合物1.0

<paper-input label="Password" required value="{{pass::input}}" id="checkPassword"></paper-input> 
<paper-input label="Re-type Password" required value="{{repass::input}}" on-change="passmatch" id="checkPassword"></paper-input> 

以验证匹配的密码,并添加passmatch功能如果

passmatch: function(e){ 
     var password = encodeURIComponent(this.pass); 
     var confirmPassword = encodeURIComponent(this.repass); 
     if(password != confirmPassword){ 
     // do something 
     } 
    }