[轉]【经典问题】关于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>

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


posted @ 2010-10-27 17:14  Athrun  阅读(1096)  评论(0编辑  收藏  举报