输入的全角字符转换成半角字符--css、js、ASP.NET

时间:2022-10-02 07:06:05

我们经常需要用户在表单中输入数字,用户不小心使用了全角状态输入数字,但是在程序中全角的数字是不能直接转换为数字的。这种全角数字的错误处理起来就有些麻烦了。对一些没有经验用户来说明明已经输入数字了,怎么还是提示输入不是数字呢?这样就很影响用户体验。

css解决方法:

在input的style设置ime-mode为disabled,禁用中文输入法。

<asp:TextBox ID="tbLink" runat="server" MaxLength="32" style="ime-mode:disabled;"></asp:TextBox>

优点:简单实用,

缺点:只能在ie浏览器中使用。

js解决方法:

//原生JavaScript全角转换为半角函数
function ToCDB(str){
var result = '';
for(var i=0; i < str.length; i++){
code = str.charCodeAt(i);
if(code >= 65281 && code <= 65374){
result += String.fromCharCode(str.charCodeAt(i) - 65248);
}else if (code == 12288){
result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32);
}else{
result += str.charAt(i);
}
}
return result;
}

ASP.NET(c#)解决方法:

     /// <summary>
/// 转换为半角字符串
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public static string ConvertToHalf(string text)
{
char[] c = text.ToCharArray(); for (int i = ; i < c.Length; i++)
{
byte[] b = System.Text.Encoding.Unicode.GetBytes(c, i, );
if (b.Length == )
{
if (b[] == )
{
b[] = (byte)(b[] + );
b[] = ;
c[i] = System.Text.Encoding.Unicode.GetChars(b)[];
}
}
}
return new string(c);
}