zoukankan      html  css  js  c++  java
  • [轉]【经典问题】关于JS验证文本框输入只能输入半角,不让输入全角

    轉自:http://hi.baidu.com/wujjtest/blog/item/91f5a57291c428158701b050.html

    方案1:

    <input        onkeyup="value=value.replace(/[\uFF00-\uFFFF]/g,'')"        onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))">

    本人斗胆点评:不能转换诸如“、”等符号,函概不全。。。需要用心体会或改造。

    方案2:

    半角全角互转函数[JS版] [转]


    /*
    ****************************
    * 半角<=>全角 *
    * [NB联盟] *
    * Writer YuPing *
    ****************************
    *参数说明:
    * str:要转换的字符串
    * flag:标记,为0时半转全,为非0时全转半
    * 返回值类型:字符串
    ****************************
    */
    function DBC2SBC(str,flag) {
    var i;
    var result=';
    if (str.length<=0) {alert('字符串参数出错');return false;}
    for(i=0;i<str.length;i++)
    { str1=str.charCodeAt(i);
    if(str1<125&&!flag)
    result+=String.fromCharCode(str.charCodeAt(i)+65248);
    else
    result+=String.fromCharCode(str.charCodeAt(i)-65248);
    }
    return result;
    }
    //示例:
    alert(DBC2SBC("AAabc",0));
    document.write(DBC2SBC("abcdefg",0))

    <input type=text value="abcdefg" id=txt><input type=button value="变" onclick=txt.value=DBC2SBC(txt.value)>

    本人斗胆点评:华而不实,哗众取宠。只能转换字母。滑稽、搞笑。

    方案3:

    <script>
    var str="2003112345510DEFGHIghij9"
    var bstr="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    var gstr="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    for(i=0;i<str.length;i++)
    {
          bpos=bstr.indexOf(str.substr(i,1))
          if(bpos!=-1)
          {
            bword=bstr.substr(bpos,1)
            gword=gstr.substr(bpos,1)
            str=str.replace(new RegExp(bword,"g"),gword)
          }
    }
    alert(str)
    </script>

    本人斗胆点评:简单、效果明显。也很奏效。但需要手工添加种类,费时费力。

    方案4:(终极解决方案)

    <script>     
    //把你认为是全角的字符赋值给数组str1,就可以了 判断全角和半角了
        var     str1     = new Array("?") ;  
        var     str2     =     "abc";   
        var     re     =     /[^\x00-\x80]/; //或    /[^\0-\127]/    十进制表示
        // [^a-z]匹配不包含在范围内的
        //alert(str1.length);
    for (var i=0;i<str1.length ;i++ )
    {
        if( re.test( str1[i] ) )
        {
         alert("找到全角字符,字符为:" + str1[i] );
        }
       
    }  
    </script>

    上面的代码可以达到验证效果,不用列举。请校验。。。


  • 相关阅读:
    leetcode58. 最后一个单词的长度 🌟
    leetcode53. 最大子序和 🌟
    leetcode38. 报数 🌟
    leetcode35. 搜索插入位置 🌟
    leetcode28. 实现strStr() 🌟
    ⚠️ Python 循环列表删除元素的注意事项
    leetcode27. 移除元素 🌟
    leetcode26. 删除排序数组中的重复项 🌟
    javascript 高阶函数 currying & uncurrying
    javascript 高阶函数 实现 AOP 面向切面编程 Aspect Oriented Programming
  • 原文地址:https://www.cnblogs.com/Athrun/p/1862795.html
Copyright © 2011-2022 走看看