zoukankan      html  css  js  c++  java
  • 脚本(js)控制页面输入


    简单介绍:

    IE中的event有很多keyCode,并且在不同的事件(onkeydown,onkeypress,onkeyup)中同一个键的keyCode也有可能不同。

    onkeydown Event    Fires when the user presses a key.
        对于字母大小写不区分keyCode,a-z/A-Z的keyCode都是65-90
        对于数字和小键盘的数字区分keyCode,0-9的keyCode是48-57,小键盘的数字0-9为96-105

    onkeypress Event    Fires when the user presses an alphanumeric key.
        与onkeydown刚好相反
        对于字母大小写区分keyCode,a-z/A-Z的keyCode都是65-90
        对于数字和小键盘的数字区分keyCode,0-9的keyCode是48-57,小键盘的数字0-9为96-105

    onkeyup Event        Fires when the user releases a key.


    1、只能输入字母、数字,且把小写字母转换成大写字母
    <script language="javascript">
    function checkChar() {
        if ((event.keyCode < 48 && event.keyCode != 45)
            || (event.keyCode > 57 && event.keyCode < 65)
            || (event.keyCode > 90 && event.keyCode < 97)
            || event.keyCode > 122) {
            event.returnValue = false;
        }   
        if (event.keyCode >= 97 && event.keyCode <= 122) {
            event.keyCode -= 32;
        }
    }

    //因为这种做法不能防止用户拷贝中文,或者采用中文输入法输入中文
    //所以只能在提交时,再次检查一下文本的值,并进行大小写转换
    function check() {    
        var objVal = document.all("name").value;
        var charCode = "";
        var returnObj = "";
        for (var i = 0; i < objVal.length; i++) {
            charCode = objVal.charCodeAt(i);       
            if ((charCode < 48 && charCode != 45)
                || (charCode > 57 && charCode < 65)
                || (charCode > 90 && charCode < 97)
                || charCode > 122) {
                alert("'" + objVal.charAt(i) + "' 该字符不合法,请输入字母、数字或中划线-!");
                return false;                       
            }
            if (charCode >= 97 && charCode <= 122) {
                charCode -= 32;
            }
            returnObj += String.fromCharCode(charCode);
        }
        document.all("name").value = returnObj;
        return true;   
    }
    </script>

    <input type="text" name="name" onkeypress="checkChar()" onpaste="return false;">
    <input type="button" name="btn" onclick="check()">

    2、以下是在网上转载的别人的代码,觉得比较好,就摘抄下来
    <script language=jscript>
    function number() {
        var char = String.fromCharCode(event.keyCode);
        alert("number:"+char);
        var re = /[0-9]/g;
        event.returnValue = char.match(re) != null ? true : false
    }

    function filterInput() {
        alert("filterInput:"+event.type);
        if (event.type.indexOf("key") != -1) {
            var re = /37|38|39|40/g
            if (event.keyCode.toString().match(re)) return false
        }   
        event.srcElement.value = event.srcElement.value.replace(/[^0-9]/g, "")
    }

    function filterPaste() {
        var oTR = this.document.selection.createRange();
        var text = window.clipboardData.getData("text");
        oTR.text = text.replace(/[^0-9]/g, "");
    }
    </script>

    <input onkeypress="number()" onkeyup="filterInput()" onchange="filterInput()" onbeforepaste="filterPaste()" onpaste="return false" style="ime-mode: disabled">

    另外一点:
    本人用的是struts,本来想采用第二种方法的,结果struts居然不支持text的onpaste方法,郁闷那。


    作者:水木    
     
  • 相关阅读:
    #一周五# (视频) 手掌四轴Estes 4606,树莓派2和WRTNode,WinHEC 2015深圳
    Android 自定义标题栏
    (视频)《快速创建网站》 4.1 为啥造软件不同于造汽车,为啥是软件就一定会有Bug - 构建开发运维一体化(DevOps)
    (视频) 《快速创建网站》3.4 网站改版3分钟搞定 - WordPress主题安装和备份
    OpenCV由汉字生成图片(透明)----可以对抗论文查重!!!
    Codeforces Round #295 (Div. 2)
    Codeforces Round #294 (Div. 2)
    Codeforces Round #293 (Div. 2)
    Codeforces Round #292 (Div. 2)
    暴力/set Codeforces Round #291 (Div. 2) C. Watto and Mechanism
  • 原文地址:https://www.cnblogs.com/hsapphire/p/1628852.html
Copyright © 2011-2022 走看看