使用parsley.js提交异步表单
我正在尝试创建一个使用Parsley.jsvalidation前端的表单并异步提交。 该表单称为#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()); } }); });
适当的解决方案如下。
这是您的代码应该是什么样子。
$(function() { $('#contactForm').submit(function(e) { e.preventDefault(); if ( $(this).parsley().isValid() ) { $.post("contactForm.php", $(this).serialize()); } }); });
- 您希望捕获表单提交事件,而不是单击提交按钮。 (还有其他提交表单的方法 – 比如按Enter键 – 不会触发点击,但也必须处理。)
- 您始终希望阻止默认操作。 您通过Ajax提交表单,因此您实际上从不想以传统方式提交表单。
- 没有必要明确地比较
=== false
。 (当表格有效时,欧芹将返回一个真值,只需使用它。) -
$(document).ready(function() { ...
is$(function() { ...
- 安置一种方式来放置花括号。 (JS中最常见的约定是“非对称”,即
{
在启动语句的一行上。) - 你的意见是多余的。 (他们确切地说出了代码所说的内容,因此不需要它们。)
编辑:在旧版本的parsely(2.x之前),使用
if ( $(this).parsley('validate') ) { // ... }
这对我有用:
是的,它是从parsleyjs.org示例中复制的。 但它工作正常!