2011-07-31 14 views
1

電子メール入力の構文をテストしています。また、電子メールの構文が間違っている場合は、Webブラウザ上の一部のメッセージに警告しています。ユーザーがそのメッセージで[OK]をクリックすると、ブラウザがテキストを選択します。アラート後にテキストを選択

var input = document.createElement('input'); 
document.body.appendChild(input); 
input.onblur = function(){ 
    var reg = /^([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 
    if(reg.test(this.value) == false){ 
     alert('Wrong syntax on e-mail'); 
     $(this).select();//This doesn't work! 
    } 
} 
+0

なぜthis.focus();だけではないのですか? –

+0

も機能しません。少なくともChrome/Macではありません。私は警告がブラウザのフォーカスと選択を停止すると思う。 – einstein

+0

トップレベルドメインは2〜4文字に制限されません。アドレスのユーザ部分に '+'文字を持つことは非常に一般的です。一言で言えば、あなたの正規表現はひどく壊れており、多くの誤った失敗を生み出します。 – Quentin

答えて

4

興味深い問題を試してみて、それがセキュリティ機能のように見えます。受け取った電子メールアドレスを入力しない限り、スクリプトはUIをブロックすることに注意してください。

これは私の作品:

input.onblur = function(){ 
    var _this=this; 
    var reg = /^([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 
    if(reg.test(this.value) == false){ 
     alert('Wrong syntax on e-mail'); 
     setTimeout(function(){_this.select();},1) 
    } 
} 

あなたはそれがタイムアウトを使用していますが、私は遅れ通話が鍵であることはないと思う見ての通り、重要なことは、関数がなる異なるスコープです今すぐ実行されます(スコープは入力の代わりにウィンドウになりました)。

+0

+1! – Mrchief

+0

'onblur'イベントは実際のぼかしの前に2番目の**の分割が発生すると思うので、テキストボックスのフォーカス/選択には目に見える効果はありません。 –

0

この

var input = document.createElement('input'); 
document.body.appendChild(input); 
input.onblur = function(){ 
    var reg = /^([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 
    if(reg.test(this.value) == false){ 
     alert('Wrong syntax on e-mail'); 
     SelectText(this); 
    } 
} 

function SelectText(text) { 

    if ($.browser.msie) { 
     var range = document.body.createTextRange(); 
     range.moveToElementText(text); 
     range.select(); 
    } else if ($.browser.mozilla || $.browser.opera) { 
     var selection = window.getSelection(); 
     var range = document.createRange(); 
     range.selectNodeContents(text); 
     selection.removeAllRanges(); 
     selection.addRange(range); 
    } else if ($.browser.safari) { 
     var selection = window.getSelection(); 
     selection.setBaseAndExtent(text, 0, text, 1); 
    } 
} 
+0

申し訳ありませんが、これはうまくいきません:( – einstein

関連する問題