1

我对表单没有什么问题,我正在使用 js 进行验证。

这是我的表单代码。

<form method="get" onkeydown="checkEnter()" action="emailform.php" id="signupform" name="subscribe">
  <input name="email" id="email" type="text" value="Enter Email for Updates" onfocus="if(this.value=='Enter Email for Updates'){this.value=''};" />
  <input type="hidden" name="submitted" id="submitted" value="true" />
</form>

我用于验证和提交表单的 id signupform 是在按下 Enter 按钮时。

但是当输入注册表格时出现问题,然后我的验证开始正常工作,当我输入正确的电子邮件时,它显示错误,当我删除注册表格 ID 时,我的表单提交工作正常而无需验证。

这是我用于 id 注册表格的 JS 代码。

function SubscribeForm() {
  $('#signupform').submit(function () {
    $('.email').removeClass('error')
    $('em.error').remove();

    var error = false;
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

    if ($.trim($('.email').val()) == '') {
      $(this).append('<em class="error">Please enter your email address.</em>');
      $(this).addClass('error');
      error = true;
    } else if (!emailReg.test(jQuery.trim($('.email').val()))) {
      $(this).append('<em class="error">Please enter a valid email address</em>');
      $(this).addClass('error');
      error = true;
    }
    if (!error) {
      $("#submit", this).after('<span id="form_loading"></span>');
      var formValues = $(this).serialize();

      $.post($(this).attr('action'), formValues, function (data) {
        $("#signupform").before(data);
      });

      $(':input[type="text"]').attr('value', '');
    }
    return false
  });
}
4

4 回答 4

1

改变

返回假;

返回!错误;

此外,添加 css 类“电子邮件”以输入电子邮件字段,或将 jquery 更改为选择器代码“.email”为“#email”

于 2012-10-01T09:28:27.190 回答
1

改变

return false

return error;

它引起了问题。

于 2012-10-01T09:11:47.290 回答
0

感谢您的帮助伙计们。我只是把这个,现在工作正常。

$('#signupform').submit(function(){
        $('.email').removeClass('error')
        $('em.error').remove();
        var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
        sEmail = document.getElementById('email').value;
        if (filter.test(sEmail)) {

            return true;
        }
        else {
            if(sEmail == '')
            {
                $(this).append('<em class="error">Please enter your email address</em>');
                $(this).addClass('error');
            }
            else
            {
                $(this).append('<em class="error">Please enter a valid email address</em>');
                $(this).addClass('error');
            }
            return false;
        }
    });
});
于 2012-10-01T09:50:47.137 回答
0

如果您不需要支持旧浏览器,也是一种可能的解决方案:placeholder

<input placeholder="Enter email" type="text"... />
于 2012-10-01T09:42:14.227 回答