异步表单提交与parsley.js(Asynchronous form submission wit

2019-08-18 11:48发布

我试图创建一个使用Parsley.js验证前端和异步提交一个表单。 该形式被称为#contactForm并提交按钮是#sendData,当我点击提交一个空的或无效的窗体上的错误出现。 我希望看到无效的表单数据的“错误”的提示,而是它只是与else条件继续,并且数据通过contactForm.php处理。


$(document).ready(function() { 

    // submit data on click and check if valid 
    $('#sendData').click(function(e) { 
        //check if valid with parsley
        var valid = $('#contactForm').parsley ( 'validate' );
        if ( valid === false )
        {
            e.preventDefault();
        }
        else 
        {
            $.post("contactForm.php", $("#contactForm").serialize());       
        }
    });
}); 

下面妥善解决。

Answer 1:

这里是你的代码应该是什么样子等。

$(function() { 
    $('#contactForm').submit(function(e) { 
        e.preventDefault();
        if ( $(this).parsley().isValid() ) {
            $.post("contactForm.php", $(this).serialize());       
        }
    });
}); 
  • 你想赶上表单提交事件,而不是提交按钮的点击。 (有提交表单的其他方式 - 类似按下Enter键 - 这不会触发了点击,但必须处理为好)
  • 你总是想阻止默认动作。 您通过Ajax提交表单,所以你其实从来没有要提交它的传统方式。
  • 有没有必要来比较=== false明确。 (香菜会返回一个值truthy当表单是有效的,只是使用它。)
  • $(document).ready(function() { ...$(function() { ...
  • 定居在一个方式来放置大括号内。 (JS中最常见的约定是“非对称”,即{上启动该语句一行。)
  • 您的意见是多余的。 (他们说的代码说什么,所以不需要他们。)

编辑:在旧版本欧芹(前2.X),使用

if ( $(this).parsley('validate') ) {
    // ...
}


Answer 2:

这是对我工作:

<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>

是的,它是从parsleyjs.org例子复制。 但它工作正常!



文章来源: Asynchronous form submission with parsley.js