方案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> 上面的代碼可以達到驗證效果,不用列舉。請校正。。。 |