jquery验证&清除错误消息

时间:2012-09-07 22:44:17

标签: jquery ajax validation

我有一个表格,其中包含3个要输入的字段,名字,姓氏和电子邮件地址。

这些元素与我在电子邮件地址中获得的元素类似:

<dl>
  <dt>
    <label for="Email_Address">Email Address</label>
  </dt>
  <dd style="float:right">
     <input type="text" id="Email_Address" class="required  email" name="Email_Address" />
     <br>
     <span class="form_error" id="email_error">
       <span id="email_msg"></span>
     </span>
   </dd>
</dl>

它下面的范围,类“form_error”是我显示任何验证错误的地方。验证码一切正常,检查有效的电子邮件地址等。然后我想我会投入AJAX验证,我可以查看该电子邮件地址是否已经存档,如果是,也显示一条消息。一切都很好。问题是如果有人输入已存档的电子邮件地址,他们会收到消息“电子邮件已存档”。然后他们去更改表单中的电子邮件地址,我得到验证错误,但我似乎无法弄清楚如何清除“已存档”消息。我尝试过使用empty()replaceWith()和其他一些内容,但似乎没有用。

这是验证码,带有AJAX调用。我确信这很简单,但我还不是所有这些的专家。

$(document).ready(function(){
  $("#LegalVita_Sign_Up").validate({
    submitHandler: function(form) {
      var isDup = false;

      $.ajax({
        url: 'dup_email.php',
        data: { email: $('#Email_Address').val() },
        async: false, 
        success: function(msg) { 
          isDup = msg === "1" ? true : false 
        },
      });         

      if (isDup) {
        error = 'duplicate email address: ' + $('#Email_Address').val();
        $('#email_msg').replaceWith(error);
        return false;
      } else {
        form.submit();
        return true;
      }
    },
    messages: {
      First_Name: " First name required",
      Last_Name: " Last name required",
      Email_Address: {
        required: " email required",
        email: " email must be of the format: 'name@domain.com'"
      }
    },
    errorPlacement: function(error, element) {
      if (element.attr("name") == "First_Name" )
        error.insertBefore("#first_msg");
      else if (element.attr("name") == "Last_Name" )
        error.insertBefore("#last_msg");
      else if (element.attr("name") == "Email_Address" ) {
        error.insertBefore("#email_msg");
      } else
        error.insertAfter(element);
},
  });  
});

1 个答案:

答案 0 :(得分:1)

您的问题与jQuery Validate无关。在提交处理程序的开头设置$('#email_msg').text('')