2013-05-07 37 views
2

表单停止提交以进行错误检查,但在检查完成后;它不会提交。检查表单错误;但现在表格未能提交

我做了一个fiddle here向你展示我的意思。

如果您点击'添加'空输入。该错误显示为应该。但是,在你纠正错误并正确填写表格之后。它未能提交从不点击:alert('submitted');

我的代码:(更新!)Fiddle here请看看

$(document).ready(function() { 
    required = ["id_name", "id_location", "id_start_date", "id_about"]; 
    emptyerror = "Please fill out this field."; 
    $("#eventForm").submit(function(e){ 
     e.preventDefault(); 
     var id = $(this).attr('id'); 
     var errorText = ''; 
     for (i=0;i<required.length;i++) { 
      var input = $('#'+required[i]); 
      if ((input.val() == "") || (input.val() == emptyerror)) { 
       input.addClass("tobefixed"); 
       input.css('border','2px solid #CF4046'); 
       input.val(emptyerror); 
      } else { 
       input.removeClass("tobefixed"); 
      } 
     } 
     if ($(":input").hasClass("tobefixed")) { 
      return false; 
     } else { 
      return true; 
     } 
    }); 
    $(":input").focus(function(){ 
     if ($(this).hasClass("tobefixed")) { 
      $(this).val(""); 
      $(this).removeClass("tobefixed"); 
      $(this).css('border', '2px solid rgb(187, 209, 236)'); 
     } 
    }); 
}); 

我怎样才能使表单提交?提前谢谢你的帮助。

+0

什么是错误通知。 – 2013-05-07 19:28:27

+0

后面的代码将不会被执行。 '返回false;警报(“我永远不会被执行!”); document.body.innerHTML =“”;' – 2013-05-07 19:29:33

+0

一旦你e.preventDefault(),你必须在你完成验证后开始提交。 – iGanja 2013-05-07 19:57:50

回答

2

您正在返回如果没有验证消息,返回

if ($(":input").hasClass("tobefixed")) { 
      return false; 
     } else { 
      return true; // it goes back from here 
     } 

除了这个,你需要注释你之前评论你的返回true或地方警报最后

返回假

更新fiddle

您将

e.preventDefault();

虽然您没有任何验证错误,但它会停止表单提交。

看到这fiddle

+0

请看看这个小提琴:http://jsfiddle.net/HgEnS/1/。它实际上并没有提交。 – Modelesq 2013-05-07 19:35:03

+0

@Modelesq请参阅更新 – mprabhat 2013-05-07 19:43:46

+0

+1这至少解决了OP已阻止使用e.preventDefault()的默认操作的问题;老实说,他可能只是删除那条线,一切都会奏效。 – iGanja 2013-05-07 20:04:00

1

删除或评论return false;正上方的警报。你也在强制返回以上的if/else

1

return语句后的代码从不执行。

return false; 
    alert('submitted'); // this never hits. Why is that? 

should be 

alert('submitted'); // this hits. 
    return false; 

更新:

if ($(":input").hasClass("tobefixed")) { 
      return false; 
     } 

     alert('submitted'); 
+0

请看看这个小提琴:http://jsfiddle.net/HgEnS/1/。它实际上并没有提交。 – Modelesq 2013-05-07 19:34:12

+0

你的陈述是真实的,但我不认为它解决了这个问题。 e.preventDefault()停止提交。 – iGanja 2013-05-07 20:00:17