文本框不允许输入特殊字符

时间:2022-11-02 20:07:09
文本框不允许输入特殊字符

我用的是服务器端控件

只能输入数字、字母和汉字

其他都不可以输入?

25 个解决方案

#1


可以用正则表达式验证。

#2


能说的详细点吗?

#3


能说的详细点吗?

#4


比如
什么事件
或什么属性下
写什么样的正则

#5


[0-9]|[a-zA-Z]|[\u4e00-\u9fa5]

#6


谢谢5楼的回复
但能说的详细点吗?
比如怎么用这个正则
我用的是服务器端控件

#7


怎么做呀?求助呀!

#8


自己顶

#9


这个东西,我觉得,是不是你自己斟酌放哪个事件里面做校验比较好啊?
例如服务器端的文本控件有OnTextChanged事件,然后你在里面使用正则表达式来做校验。或者是在提交事件中做全部的控件的内容校验。

#10


我的意思是
只要是特殊字符
连输入都不让你输入
怎么按键盘都不能进入到文本框中去

好的,我斟酌一下
谢谢9楼的建议

#11


<body> 
<script type="text/javascript"> 
function regInput(reg) 

var srcElem = event.srcElement 
var oSel = document.selection.createRange() 
var srcRange = srcElem.createTextRange() 
oSel.setEndPoint("StartToStart", srcRange) 
var num = oSel.text + String.fromCharCode(event.keyCode) + srcRange.text.substr(oSel.text.length) 
event.returnValue = reg.test(num); 

</script><input type="text" onKeyPress="regInput(/^[0-9]*$/)" /></form> 
这种方法很好用,但是在Firefox不起作用,因为firefox下不识event该事件,当然,你可以参照第二个例子改一下也行. 

第二种: 

<body> 
<script type="text/javascript"> 
function noNumbers(e) 

var keynum; 
var keychar; 
var numcheck; 
if(window.event) // IE 
  { 
  keynum = e.keyCode; 
  } 
else if(e.which) // Netscape/Firefox/Opera 
  { 
  keynum = e.which; 
  } 
keychar = String.fromCharCode(keynum); 
numcheck = /\d/; 
return !numcheck.test(keychar); 

</script> 

<input type="text" onkeypress="return noNumbers(event)" /> 
</form> 
这个例子只允许输入字母,想改成只输入数字吗?很简单,把 
return !numcheck.test(keychar);改成: 
return numcheck.test(keychar);即可 

自己改吧

#12


在KEYDOWN 事件中判断输入的字符,
private void textbox1.keydown(object sebder,eventargs e)
{
  if(e.keycode<48 && e.keycode>57 && e.keycode<65 && e.keycode>90 && e.keycode<97 && e.keycode>122   )
   messagebox.show("请输入字母数字","error");
   textbox1.clear();
textbox1.focus();
return;
}

当然还可以用正则表达式
[0-9a-zA-Z\u4e00-\u9fa5]

#13


^[^\[\'\,\%\]]{0,}$ 正则表达式

#14


只能输入数字、字母和汉字 
只要是特殊字符
连输入都不让你输入
怎么按键盘都不能进入到文本框中去

服务器端控件不可以做的是吧?

#15


onkeyup 时间中
value=value.replace(正则表达)

#16


引用 15 楼 tianrexs7212 的回复:
onkeyup 时间中
 value=value.replace(正则表达)


正则表达式

#17


意思就是你输入了特殊字符,自动用 空 覆盖

#18


 /^\\\\([^\\]+\\?)+$/
不是很确定
我在网上找的

#19


前台:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

后台:
 protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            this.TextBox1.Attributes.Add("onkeyup",@"value=value.replace(/[^\w\u4E00-\u9FA5]/g,'')");
        }
    }

#20


楼主请及时结贴

#21


前台JS验证或者直接用服务器验证控件都可以  

#22


引用 19 楼 chenjianyong94 的回复:
前台:
  <asp:TextBox ID="TextBox1" runat="server"> </asp:TextBox>

 后台:
C# codeprotectedvoid Page_Load(object sender, EventArgs e)
    {if (!Page.IsPostBack)
        {this.TextBox1.Attributes.Add("onkeyup",@"value=value.replace(/[^\w\u4E00-\u9FA5]/g,'')");
        }
    }


谢谢19楼
接分吧

#23


微软服务器控件不是有一个自带的自定义验证控件吗?你可以试试!!!

#24


看看,不过最后在后台判断比较好,前后觉得可以省略

#25


使用ajax验证控件可以实现,而且后台不用做操作

#1


可以用正则表达式验证。

#2


能说的详细点吗?

#3


能说的详细点吗?

#4


比如
什么事件
或什么属性下
写什么样的正则

#5


[0-9]|[a-zA-Z]|[\u4e00-\u9fa5]

#6


谢谢5楼的回复
但能说的详细点吗?
比如怎么用这个正则
我用的是服务器端控件

#7


怎么做呀?求助呀!

#8


自己顶

#9


这个东西,我觉得,是不是你自己斟酌放哪个事件里面做校验比较好啊?
例如服务器端的文本控件有OnTextChanged事件,然后你在里面使用正则表达式来做校验。或者是在提交事件中做全部的控件的内容校验。

#10


我的意思是
只要是特殊字符
连输入都不让你输入
怎么按键盘都不能进入到文本框中去

好的,我斟酌一下
谢谢9楼的建议

#11


<body> 
<script type="text/javascript"> 
function regInput(reg) 

var srcElem = event.srcElement 
var oSel = document.selection.createRange() 
var srcRange = srcElem.createTextRange() 
oSel.setEndPoint("StartToStart", srcRange) 
var num = oSel.text + String.fromCharCode(event.keyCode) + srcRange.text.substr(oSel.text.length) 
event.returnValue = reg.test(num); 

</script><input type="text" onKeyPress="regInput(/^[0-9]*$/)" /></form> 
这种方法很好用,但是在Firefox不起作用,因为firefox下不识event该事件,当然,你可以参照第二个例子改一下也行. 

第二种: 

<body> 
<script type="text/javascript"> 
function noNumbers(e) 

var keynum; 
var keychar; 
var numcheck; 
if(window.event) // IE 
  { 
  keynum = e.keyCode; 
  } 
else if(e.which) // Netscape/Firefox/Opera 
  { 
  keynum = e.which; 
  } 
keychar = String.fromCharCode(keynum); 
numcheck = /\d/; 
return !numcheck.test(keychar); 

</script> 

<input type="text" onkeypress="return noNumbers(event)" /> 
</form> 
这个例子只允许输入字母,想改成只输入数字吗?很简单,把 
return !numcheck.test(keychar);改成: 
return numcheck.test(keychar);即可 

自己改吧

#12


在KEYDOWN 事件中判断输入的字符,
private void textbox1.keydown(object sebder,eventargs e)
{
  if(e.keycode<48 && e.keycode>57 && e.keycode<65 && e.keycode>90 && e.keycode<97 && e.keycode>122   )
   messagebox.show("请输入字母数字","error");
   textbox1.clear();
textbox1.focus();
return;
}

当然还可以用正则表达式
[0-9a-zA-Z\u4e00-\u9fa5]

#13


^[^\[\'\,\%\]]{0,}$ 正则表达式

#14


只能输入数字、字母和汉字 
只要是特殊字符
连输入都不让你输入
怎么按键盘都不能进入到文本框中去

服务器端控件不可以做的是吧?

#15


onkeyup 时间中
value=value.replace(正则表达)

#16


引用 15 楼 tianrexs7212 的回复:
onkeyup 时间中
 value=value.replace(正则表达)


正则表达式

#17


意思就是你输入了特殊字符,自动用 空 覆盖

#18


 /^\\\\([^\\]+\\?)+$/
不是很确定
我在网上找的

#19


前台:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

后台:
 protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            this.TextBox1.Attributes.Add("onkeyup",@"value=value.replace(/[^\w\u4E00-\u9FA5]/g,'')");
        }
    }

#20


楼主请及时结贴

#21


前台JS验证或者直接用服务器验证控件都可以  

#22


引用 19 楼 chenjianyong94 的回复:
前台:
  <asp:TextBox ID="TextBox1" runat="server"> </asp:TextBox>

 后台:
C# codeprotectedvoid Page_Load(object sender, EventArgs e)
    {if (!Page.IsPostBack)
        {this.TextBox1.Attributes.Add("onkeyup",@"value=value.replace(/[^\w\u4E00-\u9FA5]/g,'')");
        }
    }


谢谢19楼
接分吧

#23


微软服务器控件不是有一个自带的自定义验证控件吗?你可以试试!!!

#24


看看,不过最后在后台判断比较好,前后觉得可以省略

#25


使用ajax验证控件可以实现,而且后台不用做操作