移動端過禁止輸入emoji表情實現方案


最近手頭上的項目有一個需求就是輸入框不能輸入表情,然后就各種在網上找資料,網上好多人給的方案是:

str = str.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, "");

用法大概就是:

<input onkeyup = "this.value = value.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, "")">;

這個對於搜狗輸入法是有用的,但是我手機上換了訊飛輸入法試了試,並沒什么卵用,第三方書法的emoji表情unicode編碼范圍還真不好確定。

 

所以反着來。你不讓輸入表情,我就只能輸入中文,英文,數字,標點符號不就實現需求了嗎?

<input type="text" id="ipt1" oninput="value = value.replace(/[^\u4E00-\u9FA5|\d|\a-zA-Z|\r\n\s,.?!,。?!…—&$=()-+/*{}[\]]|\s/g, '')" />

親測有效。

///////////////////////////////////////////////////////////////////////////////

更新:

/////////////////////////////////////////////////////////////////////////////

上述的代碼在ios端出現各種神奇的bug,簡單點就是ios下不可用。所以還得找方法。還是找到了

 

        // 判斷是ios還是安卓
        if (ios_or_android() == 'ios') {
            $("#post").on("keyup", function(){
                var param = $(this).val();
                var regRule = /[^\u4E00-\u9FA5|\d|\a-zA-Z|\r\n\s,.?!,。?!…—&$=()-+/*{}[\]]|\s/g;
                $(this).val(param.replace(regRule,""));
            })     
        } else {

            $("#post").on("input", function(){
                var param = $(this).val();
                var regRule = /[^\u4E00-\u9FA5|\d|\a-zA-Z|\r\n\s,.?!,。?!…—&$=()-+/*{}[\]]|\s/g;
                $(this).val(param.replace(regRule,""));
            })
        }

        /*
        @功能:判斷終端是ios還是安卓
         */ 
        function ios_or_android() {
          var u = navigator.userAgent;
          var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android終端
          var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios終端

          if (isAndroid) {
            return 'and';
          } else {
            return 'ios';
          }
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM