2015-10-13 75 views
0

我想阻止使用「,」和「;」在JQuery的輸入字段上。我迄今已經嘗試此解決方案:防止「,」和「;」在電子郵件輸入字段與JQuery

HTML:

<input name="txt_correu-e" type="text" id="gestio_usuaris_editaCompta_txt_correu-e" size="50" maxlength="50" class=""> 

JQUERY:

$('#gestio_usuaris_editaCompta_txt_correu-e').keypress(function (e) { 
    var filter = /([,;])/; 
    var campo = $("#gestio_usuaris_editaCompta_txt_correu-e").val(); 
    if (filter.test(campo)) { 
     e.preventDefault(); 
    } 
}); 

但不是爲我工作,因爲輸入還是打印字符,然後不讓我繼續寫輸入。我只想輸入不顯示這些字符,但讓我繼續寫郵件地址。

回答

1

爲了防止用戶鍵入,;,你可以簡單地做:

$("#target").keypress(function(event) { 
    if (event.which == 44 || event.which == 59) { 
     event.preventDefault(); 
    } 

    // other instructions 

}); 

編輯:

要驗證電子郵件地址,你可以使用:

function is_valid_email(email) { 
    var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
    return regex.test(email); 
} 

您可以在任何需要的事件(密碼,...)中調用您的文本字段。

您還可以使用HTML5 email input

<form> 
    E-mail: <input type="email" name="email"> 
</form> 

希望能有所幫助。

+0

感謝@akmozo實際工作,我想知道如何使用reg exps進行常規電子郵件驗證,不僅在我輸入時實時檢查輸入。 – Lowtrux

+1

這不允許您在@Lowtrux中放置該密鑰。這裏沒有進入。 –

+1

請記住,此解決方案將讓用戶複製並粘貼「,」和「;」。如果用戶從其他來源複製電子郵件列表並粘貼到您的輸入中,它將通過。 當您可以使用'pattern'屬性在輸入元素中指定正確的RegEx時,無需在此處使用jQuery。 – Charmander

0
$("#target").on('keyup click blur',function(event) { 
     var regex = new RegExp('^([A-Z0-9_.+-])+\@(([A-Z0-9-])+\.)+([A-Z0-9]{2,4})+$/', 'i'); 
     if(!regex.exec($(this).val())){ 
      $(this).val(""); 
      event.preventDefault(); 
    }); 

爲了避免不必要的字符,你應該聽KeyUp事件(鍵盤)插入,單擊事件(防止右鍵粘貼; - 包含文本)和模糊事件(如果輸入已通過TAB鍵選擇以粘貼;: - 包含文本)。

對於其他郵件驗證策略請參見regular-expressions.info

0

就像我在我的評論說,沒有必要使用jQuery或JavaScript來做到這一點,並通過keyPress事件限制的輸入是不是一個好的做法,因爲任何人都可以複製和粘貼內容(甚至沒有「惡意」的意圖)。

以下解決方案將允許除「,」和「;」之外的任何字符。請記住,這還不足以確保電子郵件地址有效。

<form> 
    <input type="text" pattern="^[^,;]*$" required/> 
    <input type="submit"> 
</form> 

http://jsfiddle.net/parvmck7/

讓我知道如果你有疑問。

更新:我沒有意識到你需要這個與IE8兼容。如果是這種情況,您可以嘗試使用任何HTML5 Polyfills(https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills#web-forms)。否則,JavaScript會。

+0

謝謝@Charmander,但我必須也在IE8 OP,這個解決方案不會爲那個瀏覽器工作這就是爲什麼我必須使用JQuery – Lowtrux

+0

當然,請更新你的問題,因爲這是一個關鍵點,以提供充分和有用的答案。 – Charmander