仅在Polymer中成功验证表单时发送AJAX请求

时间:2015-08-01 16:11:01

标签: javascript forms validation polymer polymer-1.0

我使用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请求放入两个不同的调用中,但我有点卡住了。

1 个答案:

答案 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);
}