Jquery 使用parsley.js异步提交表单

Jquery 使用parsley.js异步提交表单,jquery,parsley.js,Jquery,Parsley.js,我正在尝试创建一个表单,该表单在前端使用Parsley.js进行验证并异步提交。表单名为#contactForm,提交按钮名为#sendData,当我在空表单或无效表单上点击提交时,会出现错误。我希望看到来自无效表单数据的“错误”警报,但它只是在Else条件下继续,数据由contactForm.php处理 下面是正确的解决方案。下面是代码的外观 $(function() { $('#contactForm').submit(function(e) { e.prev

我正在尝试创建一个表单,该表单在前端使用Parsley.js进行验证并异步提交。表单名为#contactForm,提交按钮名为#sendData,当我在空表单或无效表单上点击提交时,会出现错误。我希望看到来自无效表单数据的“错误”警报,但它只是在Else条件下继续,数据由contactForm.php处理




下面是正确的解决方案。

下面是代码的外观

$(function() { 
    $('#contactForm').submit(function(e) { 
        e.preventDefault();
        if ( $(this).parsley().isValid() ) {
            $.post("contactForm.php", $(this).serialize());       
        }
    });
}); 
  • 您希望捕获表单提交事件,而不是单击提交按钮。(还有其他提交表单的方式,如按Enter键,这些方式不会触发单击,但也必须进行处理。)
  • 您总是希望阻止默认操作。您通过Ajax提交表单,因此实际上您永远不希望以传统方式提交表单
  • 无需显式比较
    ==false
    。(当表单有效时,欧芹将返回一个真实值,只需使用该值即可。)
  • $(document).ready(function(){…
    $(function(){…
  • 选择一种放置大括号的方法。(JS中最常见的约定是“不对称”,即在开始语句的一行上,
    {
  • 您的注释是多余的。(它们完全按照代码所述,因此不需要它们。)

编辑:在旧版本的parsely(2.x之前)中,使用


这就是我的工作原理:

<form id="signupform" data-parsley-validate>
    (....)
</form>

<script>
$(function() {
    $('#signupform').parsley().subscribe('parsley:form:validate', function (formInstance) {
        formInstance.submitEvent.preventDefault(); //stops normal form submit
        if (formInstance.isValid() == true) { // check if form valid or not
            //code for ajax event here
            $.post("createuser.php", $(#signupform).serialize());
    }});
});
</script>

(....)
$(函数(){
$('#signupform').parsley().subscribe('parsley:form:validate',函数(formInstance){
formInstance.submitEvent.preventDefault();//停止正常表单提交
if(formInstance.isValid()==true){//检查表单是否有效
//这里是ajax事件的代码
$.post(“createuser.php”,$(#signupform).serialize());
}});
});

是的,它是从Salyyjj.Org例子中复制的。但是它工作得很好。< /P>如果验证结果是布尔型,则条件应该是“<代码>(如果有效)<>代码>或<代码>(有效==false)< /代码>。此外,请考虑将参数<代码> e <代码>添加到单击处理程序中,并执行<代码> E.EnguleDebug()。;而不是返回

false
以取消事件。它们还声明必须从表单中删除
data validate=“parsley”
属性以覆盖默认处理。感谢@plalx的建议,我已删除data validate=“parsley”从表单属性中,更正了布尔值的条件。出于某种原因,我仍然有相同的问题。啊-忘了我吧。我误读了你的评论并解决了它。再次感谢。不幸的是,parsley(“验证”)在parsley 2.xIn parsley 2.x中不可用。你应该使用
$(this)。parsley().isValid()
,而不是
$(this).parsley('validate')
。其余的都是正确的。我一直在寻找这个解决方案。只要一行条件就可以解决所有问题。谢谢Tomalak!
if ( $(this).parsley('validate') ) {
    // ...
}
<form id="signupform" data-parsley-validate>
    (....)
</form>

<script>
$(function() {
    $('#signupform').parsley().subscribe('parsley:form:validate', function (formInstance) {
        formInstance.submitEvent.preventDefault(); //stops normal form submit
        if (formInstance.isValid() == true) { // check if form valid or not
            //code for ajax event here
            $.post("createuser.php", $(#signupform).serialize());
    }});
});
</script>