0

我有一个表格,需要输入 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);
},
  });  
});
4

1 回答 1

1

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

于 2012-09-07T22:47:00.610 回答