-1

我有一个带有 JS 功能的表单,用于检查空字段并提交表单而不刷新所有页面,我正在寻找一种将电子邮件检查功能集成到我现在所拥有的方法中:

$(function() {
  $('.error').hide();
  $('input.text-input').css({backgroundColor:"#EBEBEB"});
  $('input.text-input').focus(function(){
    $(this).css({backgroundColor:"#EBEBEB"});
  });
  $('input.text-input').blur(function(){
    $(this).css({backgroundColor:"#EBEBEB"});
  });

  $(".button").click(function() {
        // validate and process form
        // first hide any error messages
    $('.error').hide();
        }

      var name = $("input#name").val();
        if (name == "") {
      $("label#name_error").show();
      $("input#name").focus();
      return false;
    }
        var email = $("input#email").val();
        if (email == "") {
      $("label#email_error").show();
      $("input#email").focus();
      return false;
    }
        var phone = $("textarea#phone").val();
        if (phone == "") {
      $("label#phone_error").show();
      $("textarea#phone").focus();
      return false;
    }

        var dataString = 'name='+ name + '&email=' + email + '&phone=' + phone;
        //alert (dataString);return false;

        $.ajax({
      type: "POST",
      url: "process.php",
      data: dataString,
      success: function() {
        $('#contact_form').html("<div id='message'></div>");
        $('#message').html("<h2>Email sent</h2>")
        .hide()
        .fadeIn(1000, function() {
          $('#message').append("<img id='checkmark' src='images/check.png' />");
        });
      }
     });
    return false;
    });
});
runOnLoad(function(){
  $("input#name").select().focus();
});

感谢帮助。

4

1 回答 1

2

要检查电子邮件,您可以使用:

var emailReg = /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i

function isEmail(email) {
  return emailReg.test(email);
}
//call isEmail wherever you need it

如果我可以进一步评论您的代码,我建议您缓存您的选择器并重用它们:

var input = $('input.text-input');
input.css({backgroundColor:"#EBEBEB"}).focus(function() //... and so on

此外,如果您的 DOM 结构正确,您不必使用输入选择器调用您的 id,它只会减慢您的实现速度,因为它会迭代 DOM 中的每个输入,而不是直接获取它。这意味着:

$("label#phone_error") // don't do this
$("#phone_error") // do this

此外,您可以使用数据对象传递给 jquery,而不是

var dataString = 'name='+ name + '&email=' + email + '&phone=' + phone;

做这个:

$.ajax(yoururl, {data: 
  {
    name: name,
    email: email,
    phone: phone
  }, // and so on
于 2012-07-04T07:50:11.233 回答