表单始终提交Jquery验证引擎
从今天早上开始我就被和codeigniter卡住了。我有一张有姓名、电子邮件、密码的表格。。。我用Jquery检查所有这些字段,然后用php检查 当用户输入一封已经使用过的电子邮件时,会出现一个带有错误消息的工具箱,但表单仍在提交中。。。如果我留下一个空的电子邮件字段,它不会被提交。 因此,我猜当它在数据库中进行检查时,它不会在之后执行良好的操作(返回false…) 在我看来,这就是代码:表单始终提交Jquery验证引擎,jquery,forms,jquery-validation-engine,Jquery,Forms,Jquery Validation Engine,从今天早上开始我就被和codeigniter卡住了。我有一张有姓名、电子邮件、密码的表格。。。我用Jquery检查所有这些字段,然后用php检查 当用户输入一封已经使用过的电子邮件时,会出现一个带有错误消息的工具箱,但表单仍在提交中。。。如果我留下一个空的电子邮件字段,它不会被提交。 因此,我猜当它在数据库中进行检查时,它不会在之后执行良好的操作(返回false…) 在我看来,这就是代码: <?php $data_email_signup = array( 'nam
<?php $data_email_signup = array(
'name' => 'email_signup',
'id' => 'email_signup',
validate[required,custom[email],ajax[ajaxEmailCall]]'
);
echo form_input($data_email_signup); ?>
...
...
jQuery(document).ready(function(){
jQuery("#form_signup").validationEngine({
submitHandler: function(form) {
form.submit();
}
});
});
在文件ajaxvalidatefieldmail.php
中,我有:
"ajaxEmailCall": {
"url": "/.../ajaxValidateFieldEmail.php",
"alertTextLoad": "* Please wait",
"alertText": "* Email already used"
},
<?php
$validateValue=$_POST['fieldValue'];
$validateId=$_POST['fieldId'];
$arrayToJs = array();
$arrayToJs[0] = $validateId;
$resultats=$connexion->query("SELECT ...");
$count = $resultats->rowCount();
if($count == 0){
$arrayToJs[1] = true;
echo json_encode($arrayToJs);
}
else {
$arrayToJs[1] = false;
echo json_encode($arrayToJs);
}
?>
Firebug返回FALSE,当我输入一封已使用的电子邮件时,它显示已使用的电子邮件,但我不明白为什么表单会被验证
有人有想法吗?我在寻找另一个问题时偶然发现了这个问题。在jquery.validationEngine.js中
_onSubmitEvent: function() {
var form = $(this);
var options = form.data('jqv');
// validate each field (- skip field ajax validation, no necessary since we will perform an ajax form validation)
我不知道这是否适用于你的问题,或者你是否解决了它,但这个评论似乎与你的问题有关
此外,我还要确保AJAX向jquery返回了一些有用的东西
祝你好运。我在寻找另一个问题时偶然发现了这个问题。在jquery.validationEngine.js中
_onSubmitEvent: function() {
var form = $(this);
var options = form.data('jqv');
// validate each field (- skip field ajax validation, no necessary since we will perform an ajax form validation)
我不知道这是否适用于你的问题,或者你是否解决了它,但这个评论似乎与你的问题有关
此外,我还要确保AJAX向jquery返回了一些有用的东西
祝您好运。您需要使用作为ValidationEngine一部分的onAjaxFormComplete函数。请注意,在其文件中指出: 请注意,如果使用ajax表单验证程序,实际结果将异步传递到函数options.onAjaxFormComplete 然后您可以访问4条信息,但是您真正感兴趣的只有状态和形式 因此,要附加到表单的初始代码变为:
jQuery(document).ready(function(){
jQuery("#form_signup").validationEngine({
onAjaxFormComplete: function(status,form) {
if (status === true) {
form.submit();
}
}
});
});
现在,表单应该只在没有问题的情况下提交。您需要使用作为ValidationEngine一部分的onAjaxFormComplete函数。请注意,在其文件中指出: 请注意,如果使用ajax表单验证程序,实际结果将异步传递到函数options.onAjaxFormComplete 然后您可以访问4条信息,但是您真正感兴趣的只有状态和形式 因此,要附加到表单的初始代码变为:
jQuery(document).ready(function(){
jQuery("#form_signup").validationEngine({
onAjaxFormComplete: function(status,form) {
if (status === true) {
form.submit();
}
}
});
});
现在,表单应该只在没有问题的情况下提交。jquery.validationEngine-fr.js中的代码似乎还可以。但是,当您进行完整表单提交时,必须以不同的方式进行处理。 我使用自定义url进行验证,因为我不希望验证采取与表单相同的操作。 成功后,我分离validationengine,因为它以某种方式执行无限循环
$("#frmAddUser").validationEngine({ajaxFormValidation: true,
ajaxFormValidationURL: '/users/validate',
onAjaxFormComplete: function(status, form, json_response_from_server, options) {
if (status === true) {
//validationengine falling into infinite loop
form.validationEngine('detach');
form.submit();
}
}
});
因为这是一个表单验证,所以来自服务器的响应必须不同于简单的ajax验证,必须是这样的数组:
[[fieldId1, status1, message1], [fieldId2, status2, message2]/*optional*/]
jquery.validationEngine-fr.js中的代码似乎还可以。但是,当您进行完整表单提交时,必须以不同的方式进行处理。 我使用自定义url进行验证,因为我不希望验证采取与表单相同的操作。 成功后,我分离validationengine,因为它以某种方式执行无限循环
$("#frmAddUser").validationEngine({ajaxFormValidation: true,
ajaxFormValidationURL: '/users/validate',
onAjaxFormComplete: function(status, form, json_response_from_server, options) {
if (status === true) {
//validationengine falling into infinite loop
form.validationEngine('detach');
form.submit();
}
}
});
因为这是一个表单验证,所以来自服务器的响应必须不同于简单的ajax验证,必须是这样的数组:
[[fieldId1, status1, message1], [fieldId2, status2, message2]/*optional*/]
您基本上是在告诉it部门,无论在这里打电话后如何提交:
**submitHandler: function(form) {
form.submit();
}**
您可能需要使用带有回调函数的检查
function ajaxValidationCallback(status, form, json, options)
{
if (status === true) form.submit();
}
然后将其定义为:
jQuery(document).ready(function($){
$("#form_signup").validationEngine({
ajaxFormValidation: true,
ajaxFormValidationMethod: 'post',
onAjaxFormComplete: ajaxValidationCallback
});
});
您基本上是在告诉it部门,无论在这里打电话后如何提交:
**submitHandler: function(form) {
form.submit();
}**
您可能需要使用带有回调函数的检查
function ajaxValidationCallback(status, form, json, options)
{
if (status === true) form.submit();
}
然后将其定义为:
jQuery(document).ready(function($){
$("#form_signup").validationEngine({
ajaxFormValidation: true,
ajaxFormValidationMethod: 'post',
onAjaxFormComplete: ajaxValidationCallback
});
});