2012-01-04 16 views
0

以下のコードの目的は、テキストフィールドの電子メールアドレスが有効な場合、送信ボタンがアクティブになることです。jQueryは私が入力したときに電子メールを確認します

私はこの作業をぼかしで行っていましたが、キーボードイベントでは機能しないようです。 アイデア

$(document).ready(function(){     
    // default values 
    var email = $("#newsletter_email"); 
    var button = $("#subscribe"); 
    var a = $(email).val(); 
    var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-][email protected][a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/; 

    // disable submit 
    $(button).attr("disabled", "disabled"); 
    $(button).css("background-color","#CCC"); 

    $(email).keydown(function(event) { 
     if(filter.test(a)){ 
      button.attr("disabled", "enable"); 
      button.css("background-color","#663399"); 
     } 
    }); 
}); 

答えて

2

キーボードイベントでイベントトリガーを作成しても、残りのメソッドは正しくありません。

正規表現ですべての正当な電子メールアドレスを検証することはできません。正当な正規表現はありません。

ザ・のみ信頼できるの方法は、あなたがMXレコードのオンザフライDNSルックアップを実行する必要があり、サーバーへのデータのAJAXポストを行うことであろう(そしてそれらが存在しない場合には、 AまたはAAAAレコード)を作成します。変数aだけ外側の関数の開始時に一度に設定されているので、それは価値がある何のため

は、それが実際に.keydown()のために動作しない理由がある - あなたが$(email).val()への呼び出しを移動する必要があります.keydown()ハンドラを使用して、キーが押されるたびにその値がフェッチされるようにします。

+0

これは本当に問題ではありません。空のフィールドとランダムな文字の送信を除外したいだけです。 – ok1ha

+1

あなたの賢明な定義に依存します。インターウェブ上に浮遊しているのが見つかりました。見つけるにはしばらく時間がかかりました。非常に長い段落のように見えます。もし私がそれを再び見つけることができるなら、私はリンクを共有します。 –

+0

@TylerCrompton私はそれを前に見たことがありますが、それは遠隔的に賢明ではありません。 – Alnitak

関連する問題