如果错误消息不是第一个遇到的错误消息,则不会在JQuery中显示

时间:2011-04-05 09:14:53

标签: javascript jquery

我有一个反馈表单,我正在复制一些代码来检查文本输入和textareas中的值。我有一个名称字段和一个反馈字段。错误隐藏在文档加载和单击函数开始时名称显示为预期,但我无法获得反馈显示。

我设置错误以显示在文档加载上但隐藏onclick并且我可以收到反馈错误以显示我是否填写了名称(名称错误会隐藏,如预期的那样)。

HTML表单。

<div class="slide-out-div">
 <h3>Give us Feedback</h3>
 <a class="handle" href="#">Content</a>
 <p>We would love to hear your ideas to make the site more user-friendly or efficient for your benefit.</p>
 <form name="feedbackform" id="feedbackform" action="" method="post">
    <label for="feedname">Name:</label>
    <input type="text" name="feedname" id="feedname" style="width:100%" /><br />
    <label class="error" for="feedname" id="feedname_error">Please insert your name.</label> <br />
    <label for="feedback">Feedback:</label><br />
    <textarea name="feedback" id="feedback" style="width:100%;height:150px;"></textarea>
    <label class="error" for="feedback" id="feedback_error">Please insert your some feedback.</label> <br />
    <input type="submit" value="Submit Feedback" id="feedbacksubmit" />
 </form>
 <div id="feedwrap"></div>
</div>

JQuery Process

$('#feedbacksubmit').click(function (e) {
 $('.error').hide();
 //Cancel the link behavior
 e.preventDefault();

 var name = $("input#feedname").val();
 if(name == ""){
  $("label#feedname_error").show();  
  $("input#feedname").focus();  
  return false;
 }

 Var feedback = $("textarea#feedback").val();
 if(feedback == ""){
  $("label#feedback_error").show();  
  $("textarea#feedback").focus();  
  return false;  
 }

//process
return false;

});

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

这是因为您在完成名称验证后立即返回false。这将停止在那里执行该功能,并且不会显示第二条错误消息。也许你可以写这样的东西。

$('#feedbacksubmit').click(function (e) {
 $('.error').hide();
 //Cancel the link behavior
 e.preventDefault();
 var returnvalue = true;
 var name = $("input#feedname").val();
 if(name == ""){
  $("label#feedname_error").show();  
  $("input#feedname").focus();  
  returnvalue = false;
 }

 var feedback = $("textarea#feedback").val();
 if(feedback == ""){
  $("label#feedback_error").show();  
  $("textarea#feedback").focus();  
  returnvalue = false;  
 }

//process
return returnvalue ;

});

答案 1 :(得分:0)

看来如果我将错误移到textarea上面就会显示,但不会显示,它必须显示但对用户不可见。