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