0

我正在使用基本的 javascript 电子邮件验证功能,并且如果满足条件,我正在尝试使用 jQuery 提交表单。但是,该submit()功能似乎没有运行,因为电子邮件验证得到满足。

HTML

<form id="profile" action="" method="post">
    <input type="text" id="email">\
    <span class="error" id="email_err">Email address not valid.</span>
    //Other Form data
</form>
<div id="form-submit">Submit</div>

jQuery/Javascript

function IsEmail(email) {
    var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return regex.test(email);
}

jQuery(document).ready(function($){

    $('#form-submit').click(function(){
        var email = $('#email').val();
        if(!IsEmail(email)){
            $('#email_err').show();
            $('#email').focus();
        }else{
            $('#profile').submit();
        }
    });
}

现在我想做的就是捕获电子邮件验证。我想处理实际的表单提交和数据写入,因为我现在已经设置好了,用于写入数据的 PHP 位于当前页面 ( action="") 上。最初,它是一个实际的表单提交按钮,但我想尝试在不刷新页面的情况下验证电子邮件。

我认为我对该函数的理解submit()可能有点离题,因为我正在阅读的内容似乎只是表单提交的侦听器,但实际上并没有提交表单本身。这是正确的还是我只是在某个地方发了脾气?

4

1 回答 1

1

由于您只是在验证您的表单,您可以简单地返回true或者false表单是否有效。

一些变体:

$("#profile").submit(function() {
  var email = $('#email').val();
  if (!IsEmail(email)) {
    ...
    return false; // Form will not submit
  }
  ...
  return true; // Form will submit as usual
});

确保您使用<input type="submit" />,因为您直接附加到提交事件。

于 2013-08-28T16:21:42.547 回答