解決oninput在輸入中文時,會獲取拼音的問題


(1)起因:在今天做項目測試的時候發現的問題,在用微軟自帶的輸入法的時候,輸入中文,文本框會獲得拼音

如圖所示:

(2)解決辦法:經過一段時間的百度查找,最后通過這篇文章找到了解決的方法,這里給出網址:https://segmentfault.com/a/1190000012490380

為文本框添加compositionstart和compositionend方法,這樣在使用微軟自帶輸入法時,在進行input驗證的時候,就不會驗證拼音了,而是等中文輸入完成后再進行驗證

  • compositionstart:在輸入中文或者語音等需要等待一連串的輸入的操作之前,compositionstart事件會觸發
  • compositionend:在輸入中文或語音等完畢或取消時,compositionend事件會觸發

(3)對應代碼

//valDom:對應的文本框的id
function
Input_ValidateNum(valDom) { var isInputZh = false; var search = document.getElementById(valDom); search.addEventListener('compositionstart', function (e) { isInputZh = true; }, false); search.addEventListener('compositionend', function (e) { isInputZh = false; ValidateNum(valDom); //這個方法可以隨意更換,是用來處理輸入數據的 }, false); search.addEventListener('input', function (e) { if (isInputZh) return; ValidateNum(valDom);//這個方法可以隨意更換,是用來處理輸入數據的
}, false); }

處理方法對應的代碼:

  //驗證輸入的是否是數字或英文
  //valDom:要進行驗證的文本框
 function ValidateNum(valDom) {
   var domVal = $("#" + valDom + "").val();
   $("#" + valDom + "").val(domVal.replace(/[\W]/g, ''));
  }

 

(4)在網頁中的調用

控件的定義:

 

<input id="Title" type="text">

 

在頁面的初始方法中,調用上面的方法

$(function () {         
            Input_ValidateCEN('Title');
        });

根據上面的步驟,完成之后,在輸入的時候就可以對文本框的內容進行限制,對於微軟輸入法輸入中文獲取拼音的問題也就解決了,在這里再次感謝https://segmentfault.com/a/1190000012490380這個網址對應的方法,

參考https://segmentfault.com/a/1190000012490380這個網址

此文檔用於平時的積累,如果有問題,請留言,不勝感激,謝謝

 


免責聲明!

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



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