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ボタンを押してください。

しかし、signupformを入力すると問題が発生し、検証が正常に機能し始めます。正しいメールアドレスを入力するとエラーが表示され、signupform IDを削除すると、検証なしでフォームの送信が正常に機能します。

これがidsignupformの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

変化する

return false

return error;

問題を引き起こしています。

于 2012-10-01T09:11:47.290 に答える
1

変化する

falseを返します。

!エラーを返します。

また、入力メールフィールドにcssクラス「email」を追加するか、jqueryをセレクターコード「.email」から「#email」に変更します

于 2012-10-01T09:28:27.190 に答える
0

古いブラウザをサポートする必要がない場合は、可能な解決策もあります:プレースホルダー

<input placeholder="Enter email" type="text"... />
于 2012-10-01T09:42:14.227 に答える
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 に答える