2

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

我在这里做了一个小提琴来告诉你我的意思。

如果您单击“添加”且输入为空。错误显示为应有的样子。但是在您纠正错误并正确填写表格后。它无法提交并且永远不会命中:alert('submitted');

我的代码:(已更新!)这里小提琴请看一下

$(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)');
        }
    });
});

如何使表单提交?提前谢谢你的帮助。

4

3 回答 3

2

如果没有验证消息,您将返回,评论您的返回 true 或在返回前发出警报

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

除此之外,您需要评论您的最后一个

返回假

更新的小提琴

您正在放置

e.preventDefault();

尽管您没有任何验证错误,但它正在停止表单提交。

看到这个小提琴

于 2013-05-07T19:29:30.450 回答
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'); 
于 2013-05-07T19:27:44.800 回答
1

return false;在警报上方立即删除或评论。您还强制在 if/else 上方返回

于 2013-05-07T19:25:55.477 回答