3

これは簡単なはずですが、うまくいきません。

html

<label for="email">Enter email for updates:</label>
<input type="text" name="email" id="email" placeholder="your@email.com" />
<button name="submit" type="submit">Submit</button>

js

$(document).ready(function() {

  $('button').hide();

  $('input').keyup(function() {
    if( !validateEmail(email) ){ 
      $('button').show();
    }
  };

  function validateEmail(email) {
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
    return emailReg.test( email );
  }

});

私はそれが最良の電子メール検証であるとは思っていません。むしろ、フォームが正しく見えるときにユーザーに表示するための単純な方法です。

ありがたいことにどんな助けも受けました。

4

3 に答える 3

6

5つの問題:

  1. 構文エラー(何かが機能しない場合は、コンソールを確認する必要があります)
  2. 入力が無効になったときにボタンを非表示にしないでください
  3. あなたは実際に入力をテストしません(Eliに感謝します)
  4. 「メール」が空でないことを確認しない
  5. 一部の有効な電子メールが正規表現によって拒否されました(試してください"valid email"@example.com

最初の4つの問題に対する私の提案:

  $('button').hide();
  $('input').keyup(function() {
    if( validateEmail($(this).val()) ){ 
      $('button').show();
    } else {
      $('button').hide();
    }
  });

  function validateEmail(email) {
    if (!email) return false;
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
    return emailReg.test( email );
  }

デモンストレーション

最後の問題については、「複雑な正規表現を使用した電子メールアドレスの検証の停止」をお読みになることをお勧めします。

于 2013-01-23T21:09:46.947 に答える
3

dystroyが言ったことへの援助、構文エラーがあります。emailただし、さらに、を呼び出すときに変数を設定していませんvalidateEmail。スティーブのコメントによると、私はコアをより具体的にしました。これが更新されたコードです。

$('#email').keyup(function() {
    var email = $(this).val();

    if(validateEmail(email) ){ 
      $('button[type="submit"]').show();
    }
    else {
      $('button[type="submit"]').hide();
    }

  });
于 2013-01-23T21:13:22.373 に答える
0

dystroy、Eli Gassert、danronmoonに感謝します。ここで皆さんが指摘したさまざまなエラーがたくさんあります。将来の参考のために、これは現在私のために機能するさまざまな修正からのコードです:

$('button').hide();

$('input').keyup(function() {
    var email = $('#email').val();

    if( validateEmail(email)){ 
        $('button').show();
    } else {
        $('button').hide();
    }
});

function validateEmail(email) {
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
    return emailReg.test(email);
}
于 2013-01-23T21:32:54.903 に答える