2013-10-18 154 views
0

我有一个表单供用户提交他们对电影的评论。当有一个字段被遗漏时,会显示一个错误提示,要求用户填写必填字段,但是当您多次点击提交按钮时,会按下按钮多次显示所需的字段提示错误,从而导致长时间重复错误列表。我如何防止这种情况发生?我已经尝试禁用提交按钮上的工作和显示错误一次,但然后按钮不能再次按下。任何帮助将不胜感激。防止多个表单提交

$('#review_a_film').submit(function (e) { 

    var error = false; 

    // No value for movie_title 
    if ($('#movie_title').val() == "") { 
     $('.error').append("<li>Please enter a title </li>"); 
     error = true; 
    } 

    // No Value for actor 
    if ($('#leading_name').val() == "") { 
     $('.error').append("<li>Please enter the leading actors name </li>"); 
     error = true; 
    } 

    // No value for rating 
    if ($('#rating').val() == null) { 
     $('.error').append("<li> Please enter a rating</li>"); 
     error = true; 
    } 

    //No value for review 
    if ($('#review').val() == "") { 
     $('.error').append("<li>Please enter a review</li>"); 
     error = true; 
    } 

    if (error) { // If error found dont submit. 
     e.preventDefault(); 
    } 
}); // End of .submit function: review_a_film. 

回答

1

为什么不只是在提交函数开始时清除.error列表?

$('#review_a_film').submit(function (e) { 

    var error = false; 

    $('.error').empty(); 

    //... 

} 
+0

这很完美Ed Hinchliffe它是如何工作的虽然无法让我的头了解程序的工作原理? – user1829823

+1

按下表单上的提交按钮调用提交功能。每次按下时,您都会检查表单中的错误,并在存在错误时将相应的消息添加到错误列表中。最后,如果出现错误,您还可以阻止默认提交操作。在每次点击清除错误标记时,您并未清除添加了“附加”的HTML中的错误列表。这多余的行清空错误列表HTML。 –

1

你需要停下来验证之前提交,然后,如果它的东西,如通过提交:

$('#review_a_film').submit(function (e) { 
    Event.stop(e); 
    var form = Event.element(e); 

    ... 

    if (all is dandy) { form.submit() }; 
}); 
0

你必须禁用按钮,启用按钮,如果有任何错误。

$('#review_a_film').submit(function (e) { 
$(this).attr('disabled',true); 

var error = false; 

// No value for movie_title 
if ($('#movie_title').val() == "") { 
    $('.error').append("<li>Please enter a title </li>"); 
    error = true; 
} 

// No Value for actor 
if ($('#leading_name').val() == "") { 
    $('.error').append("<li>Please enter the leading actors name </li>"); 
    error = true; 
} 

// No value for rating 
if ($('#rating').val() == null) { 
    $('.error').append("<li> Please enter a rating</li>"); 
    error = true; 
} 

//No value for review 
if ($('#review').val() == "") { 
    $('.error').append("<li>Please enter a review</li>"); 
    error = true; 
} 

if (error) { // If error found dont submit. 
    e.preventDefault(); 
$(this).attr('disabled',false); 
} 
}); // End of .submit function: review_a_film.