在提交表单后,如何让我的jQuery Validator Code第二次运行?

这是场景。

用户填写表单。 他忘记了一些必要的信息。 我的validation码向用户表明需要缺少字段。 他完全填写表格并提交。 Presto它的工作原理。

现在,用户手动删除必填字段并再次点击提交。 Presto它的工作原理(IT SHOUDLNT)。 如何让我的validation第二次工作以防止提交空字段? 这是我的代码。 它只适用于表单提交的1次迭代。 所有后续提交都忽略了我的validation。

谢谢…

//Validation $('#CommentsForm').validate({ rules: { Author: "required", Message: "required" }, messages: { Author: "Author is required.", Message: "Comment is required." }, errorContainer: "#CommentsErrorBox", errorLabelContainer: "#CommentsErrorBox ul", wrapper: "li" }); //User Clicked Submit Button $('#CommentsForm').live('submit', function (e) { e.preventDefault(); //Prevent Browser from getting new url //Create JSON object var jsonCommentData = { ID: $('#HiddenID').val(), Author: $('#Author').val(), Message: $('#Message').val() } //Add the comment. $.ajax({ url: '/Home/_CommentsAdd', type: 'POST', data: JSON.stringify(jsonCommentData), dataType: 'html', contentType: 'application/json', //The request was a success. Repopulate the div with new result set. success: function (data) { $('#AjaxComments').html(data); $('abbr.timeago').timeago(); //update the timestamp with timeago //Change colors of message. if ($('#CommentStatus').html() == "Your Comment Has Been Added!") { $('#CommentStatus').css('color', 'GREEN'); } }, error: function (data) { alert('Fail'); } }); }); 

这是我的部分观点:_评论

 @model DH.ViewModels.CommentsViewModel 
@{ //No Comments Yet if (Model.CommentStatus.Length > 0) {
@Model.CommentStatus
} foreach (var item in Model.Comment) {
Thumbs Up
8
Thumbs Down
@item.Author
Comment Time @item.MessageDate
@item.Message
} }
    Add a Comment   

    您的问题完全取决于您的实施。

    页面加载时会出现以下情况,使您的表单在第一次提交时成功运行…

     var validator = form.validate({ rules: { Author: "required", etc.... 

    然后,因为你已经在提交处理程序中再次包含它,它在这里重新初始化…

     form.live('submit', function (e) { e.preventDefault(); //Prevent Browser from getting new url $(this).validate(); 

    …为下次提交打破它。

    您需要做的就是初始化一次 (包括所有选项)而不是在提交处理程序中…

     $('#CommentsForm').validate({ rules: { Author: "required", etc.... 

    请参阅这些官方演示的源代码。


    编辑:

    同样,您不需要提交处理程序,因为它会干扰您的表单提交。

    换句话说,您的validation工作正常,但是当您点击“提交”时,您的外部提交处理程序函数将完全接管,因此毫无疑问validation会开始失败。

    正如我在原始评论中提到的,Validation插件内置了一个提交处理程序来处理包括你的ajax在内的所有内容。

    完全删除所有这些……

     form.live('submit', function (e) { .... 

    然后 validate()函数中,你只需根据作为第二个选项列出的插件文档添加一个提交处理程序……

     $('#CommentsForm').validate({ rules: { Author: "required", /// etc.... }, submitHandler: function(form) { /// put all your ajax and such in here } });