簡體   English   中英

僅允許jQuery中的所有語言字母數字

[英]Allow only all language alphanumeric in jQuery

我正在嘗試輸入允許所有語言字母,英語,非英語等,除了特殊字符,總共:

允許:

  • 所有語言字母數字
  • CTRL / ALT / SHIFT / SPACE / BACKSPACE / SPACE

不允許:

  • 特殊字符如_-/!@#$%^&*()+=等,如表情符號等。

的jsfiddle

$('#txtFirstName').on('keydown paste',function(e) {
    if (e.shiftKey || e.ctrlKey || e.altKey) {
        e.preventDefault();
    }
    else {
        var key = e.keyCode;
        if (!((key == 8) || (key == 32) || (key == 46) ||
              (key >= 35 && key <= 40) || (key >= 65 && key <= 90) ||
              (key >= 48 && key <= 57))) {
            e.preventDefault();
        }
    }
});

好吧,一切看起來都很棒,在桌面上工作正常,但它不能在Android或iPhone鍵盤等移動設備上工作, 當你使用非英語鍵盤時它不會讓用戶鍵入 ,所以我猜它不能識別鍵盤鍵碼,對不對? 這個問題可以修復嗎? 或者您可以為此分享另一種解決方案嗎? 任何想法?

我只是讓這個邏輯反向,所以我想在所有語言中允許使用字母數字,但除非使用Unicode范圍,否則很難檢測所有語言的keyCode ,但是我編寫了一個正則表達式來禁止桌面和手機鍵盤中所有可能的特殊字符。

 $('#txtFirstName').on('keydown paste', function(e) { var pattern = /[`~!@#$%^&*()_|+\\-=?;:..'“'"<>,€£¥•،٫؟»«\\{\\}\\[\\]\\\\\\/]+/gi; if (pattern.test($(this).val())) { alert('not allowed'); $(this).val($(this).val().replace(pattern, '')); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input id="txtFirstName" value=""> 

這個解決方案幫我解決了這個問題,但它不是最好的解決方案,但我還在努力。 可以自由添加所需的特殊字符以防止它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM