我正在尝试使用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());
}
});
});
以下正确的解决方案。
答案 0 :(得分:40)
以下是您的代码的外观。
$(function() {
$('#contactForm').submit(function(e) {
e.preventDefault();
if ( $(this).parsley().isValid() ) {
$.post("contactForm.php", $(this).serialize());
}
});
});
=== false
进行比较。 (当表格有效时,欧芹将返回一个真值,只需使用它。)$(document).ready(function() { ...
是$(function() { ...
。{
。)编辑:在旧版本的parsely(2.x之前)中,使用
if ( $(this).parsley('validate') ) {
// ...
}
答案 1 :(得分:3)
这对我有用:
<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示例中复制的。但它工作正常!