TextBox中限制全角输入

      以前没注意过输入法的全角和半角,今天有个需求是文本框中不能全角输入。据此需求,用js实现了这个功能!以下是一个Demo的整个aspx页面代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="限定半角输入.aspx.cs" Inherits="Test.OtherTest.限定半角输入" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function CheckInput(obj) {
            var inputStr = obj.value;
            if (inputStr.match(/[\uff00-\uffff]/g)) {
                alert("不能全角输入,请切换到半角输入!");
                //获取光标位置
                var range = document.selection.createRange();
                range.moveStart("character", -obj.value.length);
                cursorPosition = range.text.length;

                if (inputStr.length > cursorPosition) { //全角输入在字符串中
                    obj.value = inputStr.substring(0, cursorPosition - 1) + inputStr.substring(cursorPosition, inputStr.length);
                    SetCursorPosition(obj, cursorPosition - 1); //将光标定位到刚才全角输入的位置
                }
                else {
                    obj.value = inputStr.substring(0, cursorPosition - 1);  //全角输入在字符串末尾
                }
            }
        }
        function SetCursorPosition(textbox, pos) {   //设置光标位置
            try {
                var r = textbox.createTextRange();
                r.moveStart('character', pos);
                r.collapse(true);
                r.select();
            }
            catch (e) {
            }
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="txt" runat="server" οnkeyup="CheckInput(this);" οnkeydοwn="CheckInput(this);"></asp:TextBox>
    </div>
    </form>
</body>
</html>

js实现的功能是:当全角输入时,首先获取光标的位置,如果光标在输入的字符串中并且继续输入时,则将光标前一个字符删除(即:全角输入的一个字符),并提示不能全角输入;如果光标在已经输入的字符串尾部,则直接将光标前一个字符删除,并提示不能全角输入!

 

总结:写的不对的地方,望各位大神不吝指教!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值