0

電子メール サインアップ フォーム用に次の jQuery コードをコーディングしました。

$(document).ready(function () {
  var default_value = '<?php echo $email_text ?>';
  var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  $('#email').each(function () {
    $(this).focus(function () {
      if (this.value == default_value) {
        this.value = '';
      }
    });
  $(this).blur(function () {
    if (this.value == '') {
      this.value = default_value;
    }
  });
});
$('button#yes').hover(function () {
  $(this).css('background', '#fff').css('cursor', 'not-allowed');
  $('#email').css('background', '#ca9822');
}, function () {
  $(this).css('background', '').css('cursor', '');
  $('#email').css('background', '');
});
$('#email').keyup(function () {
  if (this.value.length > 2 && this.value !== default_value && filter.test(this)) {
    $('button#yes').unbind().css('background', '').css('cursor', '').click(function () {
      showconfirm();
    });
    $('#email').css('background', '');
  } else {
    $('button#yes').unbind().hover(function () {
      $(this).css('background', '#fff').css('cursor', 'not-allowed');
        $('#email').css('background', '#ca9822');
      }, function () {
        $(this).css('background', '').css('cursor', '');
        $('#email').css('background', '');
      });
    }
  });
$("form#signupform").submit(function () {
. . .

基本的に行うことは、入力フォームをチェックし、「はい」ボタンを有効にしてshowconfirm()機能をトリガーし、最終的に送信アクションを処理する実際の送信ボタンを表示することです。

問題は、利用規約とプライバシー ポリシーの問題の「確認」ボタンだけが必要だということです。最初のボタンでチェックプロセス全体を実行したいと思います。入力された電子メールがいくつかの基準を満たしていない場合、ユーザーは「はい」をクリックできないはずです。私はそれを最大で動作させることができますvalue.length > 2(私は別の SO 記事で、電子メールの最小の長さは 3 文字、つまり「a@b」になる可能性があることを読みました... これが の> 2由来です。value !== default_value(デフォルト値は基本的に「Your E-Mail」であり、ユーザーがカスタム データを入力する前に入力に焦点を合わせてぼやけると、入力フィールドからクリアされ、入力フィールドに再描画されます)。しかし、私が入れたとき、filter.test()私はいつもそれを得るfalse.

方法はわかりませんが、確かにここで間違って使用しています。以前は関数の下で使用していましたが、submitうまく機能していました。しかし、私が言ったように、私はプロセスの最初の部分ですべてを機能させようとしています。さすがにsubmit関数内では、コードの繰り返しとか、エラーメッセージの追加とかとか、面倒くさくなってしまうので、切り替えたいです。

何かアイデアはありますか?

4

1 に答える 1

0

値ではなく、入力要素でパターンをテストしようとしています。これを試して:

$('#email').keyup(function () {
  if (this.value.length > 2 && this.value !== default_value && filter.test(this.value)) {

試しfilter.test(this)ましたが、使用する必要がありますfilter.test(this.value)

于 2013-05-29T17:42:57.650 に答える