我使用Polymer 1.0 iron-form获取用户输入并使用iron-ajax向服务器发送AJAX请求:
<form is="iron-form" id="form" >
<paper-input name="userEmail" label="Email" required></paper-input>
<paper-input name="password" type="password" label="Password" required></paper-input>
<br>
<paper-button raised
on-click="login">Submit</paper-button>
</form>
<script>
(function() {
Polymer({
is: 'module-login',
login: function() {
// this is used to trigger Polymer's form validation
Polymer.dom(event).localTarget.parentElement.submit();
// this is my ajax request
this.$.auth.login(this.$.userEmail.value, this.$.password.value);
}
});
})();
</script>
其中Polymer.dom(event).localTarget.parentElement.submit();
用于验证所需输入的表单。
所以我想要实现的是仅在表单验证成功时发送AJAX请求,但此时即使表单显示错误,它仍将继续进行AJAX请求。
我可能需要将验证和实际的AJAX请求放入两个不同的调用中,但我有点卡住了。
答案 0 :(得分:1)
我认为Polymer.dom(event).localTarget.parentElement.submit();
不会运行任何验证,只是提交表单。请参阅here。
您应该使用的实际方法(如该链接中所示)为.validate()
。这将返回一个布尔值,这意味着您可以在if
语句中包装实际的登录调用:
if ( Polymer.dom(event).localTarget.parentElement.validate() ) {
this.$.auth.login(this.$.userEmail.value, this.$.password.value);
}