用Jquery控制文本框只能輸入數字和字母


針對"只能輸入數字"、"只能輸入字母"和"只能輸入數字和字母"的三種輸入限制,我封裝成onlyNum(),onlyAlpha()和onlyNumAlpha()3個Jquery擴展方法,方便復用,由於里面一些JS代碼涉及到了"禁用輸入法,獲取剪切板的內容",而"禁用輸入法,獲取剪切板的內容"只能在IE瀏覽器下才有效,對於別的瀏覽器是無效的,因此這三個方法只適合在IE瀏覽器下使用才有效,三個方法的代碼如下

一、限制只能輸入數字

// ----------------------------------------------------------------------
// <summary>
// 限制只能輸入數字
// </summary>
// ----------------------------------------------------------------------
$.fn.onlyNum = function () {
    $(this).keypress(function (event) {
        var eventObj = event || e;
        var keyCode = eventObj.keyCode || eventObj.which;
        if ((keyCode >= 48 && keyCode <= 57))
            return true;
        else
            return false;
    }).focus(function () {
    //禁用輸入法
        this.style.imeMode = 'disabled';
    }).bind("paste", function () {
    //獲取剪切板的內容
        var clipboard = window.clipboardData.getData("Text");
        if (/^\d+$/.test(clipboard))
            return true;
        else
            return false;
    });
};
限制只能輸入數字

二、限制只能輸入字母

// ----------------------------------------------------------------------
// <summary>
// 限制只能輸入字母
// </summary>
// ----------------------------------------------------------------------
$.fn.onlyAlpha = function () {
    $(this).keypress(function (event) {
        var eventObj = event || e;
        var keyCode = eventObj.keyCode || eventObj.which;
        if ((keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122))
            return true;
        else
            return false;
    }).focus(function () {
        this.style.imeMode = 'disabled';
    }).bind("paste", function () {
        var clipboard = window.clipboardData.getData("Text");
        if (/^[a-zA-Z]+$/.test(clipboard))
            return true;
        else
            return false;
    });
};
限制只能輸入字母

三、 限制只能輸入數字和字母

// ----------------------------------------------------------------------
// <summary>
// 限制只能輸入數字和字母
// </summary>
// ----------------------------------------------------------------------
$.fn.onlyNumAlpha = function () {
    $(this).keypress(function (event) {
        var eventObj = event || e;
        var keyCode = eventObj.keyCode || eventObj.which;
        if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122))
            return true;
        else
            return false;
    }).focus(function () {
        this.style.imeMode = 'disabled';
    }).bind("paste", function () {
        var clipboard = window.clipboardData.getData("Text");
        if (/^(\d|[a-zA-Z])+$/.test(clipboard))
            return true;
        else
            return false;
    });
};
限制只能輸入數字和字母

使用方法:首先在畫面加載完成之后編寫如下的JS腳本

$(function () {
    // 限制使用了onlyNum類樣式的控件只能輸入數字
    $(".onlyNum").onlyNum();
    //限制使用了onlyAlpha類樣式的控件只能輸入字母
    $(".onlyAlpha").onlyAlpha();
    // 限制使用了onlyNumAlpha類樣式的控件只能輸入數字和字母
    $(".onlyNumAlpha").onlyNumAlpha();
   });

對需要做輸入控制的控件設置class樣式

 <ul>
        <li>只能輸入數字:<input type="text" class="onlyNum" /></li>
        <li>只能輸入字母:<input type="text" class="onlyAlpha" /></li>
        <li>只能輸入數字和字母:<input type="text" class="onlyNumAlpha" /></li>
</ul>

這樣畫面上凡是設置了class="onlyNum"的控件就只能輸入數字,設置了class="onlyAlpha"的控件只能輸入字母,設置了class="onlyNumAlpha"的控件只能輸入數字和字母,通過這種方式就可以限制了用戶的輸入范圍,避免用戶進行一些非法的輸入。

  在我看來,這種限制控件輸入的方式是比較好的一種方式,可以避免用戶犯錯,平時傳統的做法都是用戶輸入了非法字符后,我們再彈出一個消息框告訴用戶輸入了非法字符,這種方式就是"用戶已經做了,我們才告訴用戶不能這么做",而上面的那種方式是卻能讓用戶只能輸入我們指定范圍內的字符,讓"用戶永遠沒有機會去犯錯"。


免責聲明!

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



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