(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這個網址
此文檔用於平時的積累,如果有問題,請留言,不勝感激,謝謝