在公司開發WinForm項目時,發現公司自主研發的textbox控件很是強大,能夠實現"只能輸入數字"、"只能輸入字母"和"只能輸入數字和字母"的三種輸入限制,這樣就能夠精確控制用戶輸入的內容範圍,讓"用戶永遠沒有辦法輸入限定的內容範圍以外的其餘內容",也就是"用戶即便想犯錯誤也沒有機會",這種限制控件輸入的方式給了我很大的啓發,若是在web項目中也能作到這樣的精確控制,那麼就能夠避免由於一些非法輸入而形成系統出錯,既然WinForm裏面能夠實現這樣的控件,那麼web項目裏面也應該有辦法去實現相似這樣的控件或者可以作到相似的效果,通過本身的一番研究和查找資料,終於作到了相似的效果,針對"只能輸入數字"、"只能輸入字母"和"只能輸入數字和字母"的三種輸入限制,我封裝成onlyNum(),onlyAlpha()和onlyNumAlpha()3個Jquery擴展方法,方便複用,因爲裏面一些JS代碼涉及到了"禁用輸入法,獲取剪切板的內容",而"禁用輸入法,獲取剪切板的內容"只能在IE瀏覽器下才有效,對於別的瀏覽器是無效的,所以這三個方法只適合在IE瀏覽器下使用纔有效,三個方法的代碼以下web
1 // ---------------------------------------------------------------------- 2 // <summary> 3 // 限制只能輸入數字 4 // </summary> 5 // ---------------------------------------------------------------------- 6 $.fn.onlyNum = function () { 7 $(this).keypress(function (event) { 8 var eventObj = event || e; 9 var keyCode = eventObj.keyCode || eventObj.which; 10 if ((keyCode >= 48 && keyCode <= 57)) 11 return true; 12 else 13 return false; 14 }).focus(function () { 15 //禁用輸入法 16 this.style.imeMode = 'disabled'; 17 }).bind("paste", function () { 18 //獲取剪切板的內容 19 var clipboard = window.clipboardData.getData("Text"); 20 if (/^\d+$/.test(clipboard)) 21 return true; 22 else 23 return false; 24 }); 25 };
1 // ---------------------------------------------------------------------- 2 // <summary> 3 // 限制只能輸入字母 4 // </summary> 5 // ---------------------------------------------------------------------- 6 $.fn.onlyAlpha = function () { 7 $(this).keypress(function (event) { 8 var eventObj = event || e; 9 var keyCode = eventObj.keyCode || eventObj.which; 10 if ((keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122)) 11 return true; 12 else 13 return false; 14 }).focus(function () { 15 this.style.imeMode = 'disabled'; 16 }).bind("paste", function () { 17 var clipboard = window.clipboardData.getData("Text"); 18 if (/^[a-zA-Z]+$/.test(clipboard)) 19 return true; 20 else 21 return false; 22 }); 23 };
1 // ---------------------------------------------------------------------- 2 // <summary> 3 // 限制只能輸入數字和字母 4 // </summary> 5 // ---------------------------------------------------------------------- 6 $.fn.onlyNumAlpha = function () { 7 $(this).keypress(function (event) { 8 var eventObj = event || e; 9 var keyCode = eventObj.keyCode || eventObj.which; 10 if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122)) 11 return true; 12 else 13 return false; 14 }).focus(function () { 15 this.style.imeMode = 'disabled'; 16 }).bind("paste", function () { 17 var clipboard = window.clipboardData.getData("Text"); 18 if (/^(\d|[a-zA-Z])+$/.test(clipboard)) 19 return true; 20 else 21 return false; 22 }); 23 };
使用方法:首先在畫面加載完成以後編寫以下的JS腳本瀏覽器
1 $(function () { 2 // 限制使用了onlyNum類樣式的控件只能輸入數字 3 $(".onlyNum").onlyNum(); 4 //限制使用了onlyAlpha類樣式的控件只能輸入字母 5 $(".onlyAlpha").onlyAlpha(); 6 // 限制使用了onlyNumAlpha類樣式的控件只能輸入數字和字母 7 $(".onlyNumAlpha").onlyNumAlpha(); 8 });
對須要作輸入控制的控件設置class樣式學習
1 <ul> 2 <li>只能輸入數字:<input type="text" class="onlyNum" /></li> 3 <li>只能輸入字母:<input type="text" class="onlyAlpha" /></li> 4 <li>只能輸入數字和字母:<input type="text" class="onlyNumAlpha" /></li> 5 </ul>
這樣畫面上凡是設置了class="onlyNum"的控件就只能輸入數字,設置了class="onlyAlpha"的控件只能輸入字母,設置了class="onlyNumAlpha"的控件只能輸入數字和字母,經過這種方式就能夠限制了用戶的輸入範圍,避免用戶進行一些非法的輸入。this
在我看來,這種限制控件輸入的方式是比較好的一種方式,能夠避免用戶犯錯,平時傳統的作法都是用戶輸入了非法字符後,咱們再彈出一個消息框告訴用戶輸入了非法字符,這種方式就是"用戶已經作了,咱們才告訴用戶不能這麼作",而上面的那種方式是卻能讓用戶只能輸入咱們指定範圍內的字符,讓"用戶永遠沒有機會去犯錯"。google
寫這篇文章既是對我本身學習的一個總結,也但願可以對一些初學者朋友們有必定的幫助,以上文章內容若是有寫得不對的地方,歡迎廣大朋友指正,我感激涕零!,另外,若是有朋友有辦法在火狐和google下也可以禁用輸入法和獲取剪切板的內容的,也但願可以告知我一下,感激涕零!spa