2012-07-25 156 views
0

我正在使用validate.js来验证表单。如果表单不验证,当用户尝试提交表单时会显示一条消息,显示错误。如果用户通过验证,则会弹出一个成功消息。问题是,表单实际上没有发送/执行操作,因为validate.js阻止了默认行为。使用jQuery和验证提交表单

是防止形式从发送的代码是:

if (event && event.preventDefault) { 
    event.preventDefault(); 
} else if (event) { 
    event.returnValue = false; 
} 

你可以看到完整的JS在这里:http://jsfiddle.net/DBfks/

在我看来,上面的代码防止表单提交IF的默认行为表单没有通过验证,但是如果是,那么表单应该提交。它是否正确?有关如何使表单提交INSTEAD显示成功消息的任何想法(请参阅jsfiddle以查看成功和错误消息的工作方式)

在此先感谢。你可以看到一个工作演示here

回答

1

添加

$("#myForm").submit(); 

如果你想提交表单。

在你的jsfiddle你得到这个if/else语句:

if (errors.length > 0) { 
         SELECTOR_ERRORS.empty(); 

         for (var i = 0, errorLength = errors.length; i < errorLength; i++) { 
          SELECTOR_ERRORS.append(errors[i].message + '<br />'); 
         } 

         SELECTOR_SUCCESS.css({ display: 'none' }); 
         SELECTOR_ERRORS.fadeIn(200); 

        } else { 
         SELECTOR_ERRORS.css({ display: 'none' }); 
         SELECTOR_SUCCESS.fadeIn(200); 

        } 

(!好吧,复制粘贴有点把事情搞糟)

所以,如果有任何错误,加上人的错误错误框并显示它。否则让你验证它。但是,这是不是你想要的,你必须提交有以下形式:

else { 
    $("#yourform").submit(); 
} 
+0

即时通讯期待在验证代码中集成它。我在外面尝试(在提交按钮上使用单击事件),并且它不起作用(似乎由验证插件阻止) – JCHASE11 2012-07-25 14:56:13

+0

是的,您应该用此代替succes Message的代码。 – 11684 2012-07-25 15:01:08

+0

我需要帮助解决我的问题。这在默认情况下不起作用,因为默认是被阻止的。 – JCHASE11 2012-07-26 19:20:03

-1

代码不使用jQuery提交是因为的preventDefault方法提交表单的jQuery阻止的原因。修复是简单地删除这些行:

if (event && event.preventDefault) { 
    event.preventDefault(); 
} else if (event) { 
    event.returnValue = false; 
} 
+0

即使验证失败,也会提交。 – 11684 2012-07-26 21:12:42