【问题标题】:parsley.js prevents submit after failing ajax validation has been correctedparsley.js 阻止 ajax 验证失败后提交已得到纠正
【发布时间】:2018-04-10 23:01:47
【问题描述】:

我有一个表单,我需要查看输入表单的电子邮件地址是否已经在数据库中。此检查需要根据表单中另一个字段的值有条件地执行。

这是表单域:

<input type="email" value="" class="form-control" name="email_bill" id="email" required data-parsley-type="email" data-parsley-registered="1" data-parsley-trigger="focusout submit">

这是验证器代码:

Parsley.addValidator('registered', {
   validateString: function(value) {
   if ($('input[name="d_type"]:checked').val() == 'S') {  
     return $.ajax({
      type: "POST",  
      url: "/is_registered.html",  
      data: $('form').serialize()  
     });
    } else {
         var parent = $('#email').closest('div');
         var this_id = $('#email').attr('data-parsley-id');
         $(parent).removeClass('has-error').addClass('parsley-success');
         $(this_id).remove();
         return true;
         }
   },
   messages: {en: "Someone has already registered with the Email address you entered"}

});

服务器代码很简单,如果地址不在数据库中,则返回“200 OK”标头,如果在,则返回“404 Not Found”。行得通。

对于简单的 ajax 请求,我按照 parsley.js 自定义验证器示例中的示例进行操作。

发生的情况是:如果我输入“注册”地址,我会收到相应的错误消息。如果我然后去将该地址修改为我知道未注册的地址,然后将标签或鼠标移到下一个字段,错误消息就会消失,但提交按钮不起作用。使情况更加复杂的是,如果我加载并填写带有“未注册”地址的表格,则提交按钮也不起作用。似乎执行自定义验证器会在输入时禁用提交。

我已经玩了几个小时,尝试了各种事件操作,但没有任何效果。

我应该指出,如果 d_type 的检查值(参见上面的字段定义)不是“S”,那么一切都会按预期工作。

我完全不明白为什么遵循文档会导致失败。

【问题讨论】:

    标签: ajax parsley.js custom-validators


    【解决方案1】:

    事实证明,这根本不是欧芹的问题。

    一位同事创建了表单,提交按钮的 id 为“提交”,这无法让 parsley 解析提交处理程序。在这种情况下,显然 parsley 会阻止提交。

    谁知道?

    现在,我们知道了.....

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-15
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多