如何限制输入框只能输入数字

时间:2022-01-10 08:06:21
在ASP.NET(vb2005.net)里面没有onkeypress,我想限制输入,只让输入框输入0-9的数字,其他按键无效,怎么办?


我在TextBox1_TextChanged里面用TextBox1.Text = (TextBox1.Text.Replace("%", ""))代码,在网页里输入第二个输入框是总是要点两下,不知为什么

最好有代码我看下,我看代码放什么地方比较好

36 个解决方案

#1


正则表达式啊/^[0-9]{位数1,位数2}$/
TextBox1.onblur=function(){
   TextBox1.test(/^[0-9]{位数1,位数2}$/);
...............
}

#2



<input type="text" onkeyup="this.value=this.value.replace(/[^\d]/g,'') " onafterpaste="this.value=this.value.replace(/[^\d]/g,'') " name="f_order" value="1"/> 

#3


我不会C,有没有VB2005的代码
代码放在哪?LOAD?TextChanged?

#4


VB2005里面没有onkeyup

#5


用正则式验证控件RegularExpressionValidator
输入正则式为: ^[0-9]+$
这样的话,用户输入了非数字,表单就不能提交。

#6


通过RegularExpressionValidator验证"^[0-9]*[1-9][0-9]*$" 

#7


引用 3 楼 zengfanying 的回复:
我不会C,有没有VB2005的代码
代码放在哪?LOAD?TextChanged?


不是,是前台代码,aspx页面的代码,不是.cs的代码
直接用2楼的方法就可以了

#8


<asp:TextBox ID="TextBox" runat="server" OnKeyPress="if(((event.keyCode>=48)&&(event.keyCode <=57))||(event.keyCode==46)) {event.returnValue=true;} else{event.returnValue=false;}" MaxLength="15"> </asp:TextBox>

或者:<asp:TextBox ID="TextBox" runat="server" onkeyup='value=value.replace(/[^d]/g,'') ' onbeforepaste='clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))' MaxLength="15"> </asp:TextBox> 

string regExp  =  /^[1-9][0-9]*$/;  
     if(!regExp.test( this.txtLogin.Text))  
     {  
    alert(只能是数字!);  
    this.txtLogin.clear();  
    return ; 
     }
通过Attibutes.Add("OnKeyPress","");

#9


如果你非要用keyup的话
this.textbox1.Attributes.Add("onkeyup", "javascript:alert('123');");

#10


兄弟们那,你们看到我的意思吗,vb2005.net里面没有onkeyup,那是c里面的

#11


也没有OnKeyPress,这就是我要烦的

#12


引用 5 楼 wjn161 的回复:
用正则式验证控件RegularExpressionValidator
输入正则式为: ^[0-9]+$
这样的话,用户输入了非数字,表单就不能提交。

就该这么做 如果你不喜欢可以用JS

#13


有没有其他办法,让我在textbox1里面输入完后,离开时(就是点击textbox2进行输入时)运行另一段代码
,我在另一段代码里用SELECT进行查找,看数据库有没有TEXTBOX1.TEXT的值,没有就提示错误,有就在TEXTBOX2里面接着输入

#14


怎么vb2005.net比C少好多属性,如onkeyup,onkeypress,但是写桌面程序就有

#15


onkeyup="value=value.replace(/[^\0-9]/g,'')"
文本加这

#16


15楼的没有看清楚吗?我用的是VB2005.NET,里面没有onkeyup

#17


可以通过加属性方法实现

#18


引用 2 楼 xzq686 的回复:
HTML code<inputtype="text" onkeyup="this.value=this.value.replace(/[^\d]/g,'') " onafterpaste="this.value=this.value.replace(/[^\d]/g,'') " name="f_order" value="1"/>

这个办法很好   我前两天见过   然后用过   可以的
下面是我前两天写的
<asp:TextBox ID="one" runat=server onkeyup="value=value.replace(/[^0-9]/g,'')" ></asp:TextBox>

如果想输入小数点   /[^0-9]/g   改成  /[^0-9.]/g

就可以了

#19


用正则来限制

#20


  1.可以用验证控件:RegularExpressionValidator 验证 "^[0-9]*[1-9][0-9]*$";

#21


 1.可以用验证控件:RegularExpressionValidator 验证 "^[0-9]*[1-9][0-9]*$";
 
2.在后台Load事件中 
          this.textbox1.Attributes.Add("onkeyup", "验证方法");
   前台在加上
     javascript 代码 即(验证方法)
    在验证方法中写验证就可以了啊!

#22


该回复于2009-09-16 09:55:05被版主删除

#23


js+正则表达式来实现
当然也可以这样
onkeypress="Do()"

function Do()
{
var text= document.getElementById("text1");

    if(event.keyCode<48 || event.keyCode>57)
{
    text.value=text.value.substring(0,text.value.length-1);
}
}

#24


引用 2 楼 xzq686 的回复:
HTML code<inputtype="text" onkeyup="this.value=this.value.replace(/[^\d]/g,'') " onafterpaste="this.value=this.value.replace(/[^\d]/g,'') " name="f_order" value="1"/>


正解!

#25


引用 16 楼 zengfanying 的回复:
15楼的没有看清楚吗?我用的是VB2005.NET,里面没有onkeyup

不是没有,而是vs对于服务器控件中不显示html控件的事件,并不代表不能用2楼的代码估计你试都没试吧,运行一下看看

#26


第一步:
<asp:TextBox ID="TextBox1" runat=server onkeyup="value=value.replace(/[^0-9]/g,'')" > </asp:TextBox> 

第二步:
加个正则表达式验证控件,验证是否是数字

#27


最好使用正则表达式:
使用方法:
首先 引入命名空间  
          using System.Text.RegularExpressions;
添加语句
 private void textBoxlogin_id_Leave(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(textBoxlogin_id.Text.Trim()))
            {
                labeltips.Text = "登陆用户名必须为0-9的数字,长度为9-12";
                 Regex rg = new Regex("$[0-9]{9,12}");
                labeltips.Visible =! rg.IsMatch(textBoxlogin_id.Text.Trim());
            }
        }

#28


引用 25 楼 ojlovecd 的回复:
引用 16 楼 zengfanying 的回复:
15楼的没有看清楚吗?我用的是VB2005.NET,里面没有onkeyup

不是没有,而是vs对于服务器控件中不显示html控件的事件,并不代表不能用2楼的代码估计你试都没试吧,运行一下看看

正解 

#29


通过RegularExpressionValidator验证"^[0-9]*[1-9][0-9]*$" 

或者用前台方法,代码见2楼

#30


听到一块钱三样。三洋一块钱

#31


二楼 简单有实惠 帮顶

#32


正则。

#33


呵呵,多简单的正则表达式啊

#34


不好意思,我现在知道了,请问我以前用的是标准控件里面的TEXTBOX控件,和HEML里面的TEXT有什么不一样?textbox里面没有onkeypress ,而text里面有这个属性,请问textbox里面可以用这个属性吗?不是要把所有的TEXTBOX换成TEXT吧?

#35


引用 16 楼 zengfanying 的回复:
15楼的没有看清楚吗?我用的是VB2005.NET,里面没有onkeyup


不是一般的笨 你就知道C

#36


引用 34 楼 zengfanying 的回复:
不好意思,我现在知道了,请问我以前用的是标准控件里面的TEXTBOX控件,和HEML里面的TEXT有什么不一样?textbox里面没有onkeypress ,而text里面有这个属性,请问textbox里面可以用这个属性吗?不是要把所有的TEXTBOX换成TEXT吧?


看來你沒有弄清楚ASP.NET中的伺服器元件與HTML之間的差別與關係﹐
建議你重新認識一下什麼是.Net Framework什麼是ASP.NET

#1


正则表达式啊/^[0-9]{位数1,位数2}$/
TextBox1.onblur=function(){
   TextBox1.test(/^[0-9]{位数1,位数2}$/);
...............
}

#2



<input type="text" onkeyup="this.value=this.value.replace(/[^\d]/g,'') " onafterpaste="this.value=this.value.replace(/[^\d]/g,'') " name="f_order" value="1"/> 

#3


我不会C,有没有VB2005的代码
代码放在哪?LOAD?TextChanged?

#4


VB2005里面没有onkeyup

#5


用正则式验证控件RegularExpressionValidator
输入正则式为: ^[0-9]+$
这样的话,用户输入了非数字,表单就不能提交。

#6


通过RegularExpressionValidator验证"^[0-9]*[1-9][0-9]*$" 

#7


引用 3 楼 zengfanying 的回复:
我不会C,有没有VB2005的代码
代码放在哪?LOAD?TextChanged?


不是,是前台代码,aspx页面的代码,不是.cs的代码
直接用2楼的方法就可以了

#8


<asp:TextBox ID="TextBox" runat="server" OnKeyPress="if(((event.keyCode>=48)&&(event.keyCode <=57))||(event.keyCode==46)) {event.returnValue=true;} else{event.returnValue=false;}" MaxLength="15"> </asp:TextBox>

或者:<asp:TextBox ID="TextBox" runat="server" onkeyup='value=value.replace(/[^d]/g,'') ' onbeforepaste='clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))' MaxLength="15"> </asp:TextBox> 

string regExp  =  /^[1-9][0-9]*$/;  
     if(!regExp.test( this.txtLogin.Text))  
     {  
    alert(只能是数字!);  
    this.txtLogin.clear();  
    return ; 
     }
通过Attibutes.Add("OnKeyPress","");

#9


如果你非要用keyup的话
this.textbox1.Attributes.Add("onkeyup", "javascript:alert('123');");

#10


兄弟们那,你们看到我的意思吗,vb2005.net里面没有onkeyup,那是c里面的

#11


也没有OnKeyPress,这就是我要烦的

#12


引用 5 楼 wjn161 的回复:
用正则式验证控件RegularExpressionValidator
输入正则式为: ^[0-9]+$
这样的话,用户输入了非数字,表单就不能提交。

就该这么做 如果你不喜欢可以用JS

#13


有没有其他办法,让我在textbox1里面输入完后,离开时(就是点击textbox2进行输入时)运行另一段代码
,我在另一段代码里用SELECT进行查找,看数据库有没有TEXTBOX1.TEXT的值,没有就提示错误,有就在TEXTBOX2里面接着输入

#14


怎么vb2005.net比C少好多属性,如onkeyup,onkeypress,但是写桌面程序就有

#15


onkeyup="value=value.replace(/[^\0-9]/g,'')"
文本加这

#16


15楼的没有看清楚吗?我用的是VB2005.NET,里面没有onkeyup

#17


可以通过加属性方法实现

#18


引用 2 楼 xzq686 的回复:
HTML code<inputtype="text" onkeyup="this.value=this.value.replace(/[^\d]/g,'') " onafterpaste="this.value=this.value.replace(/[^\d]/g,'') " name="f_order" value="1"/>

这个办法很好   我前两天见过   然后用过   可以的
下面是我前两天写的
<asp:TextBox ID="one" runat=server onkeyup="value=value.replace(/[^0-9]/g,'')" ></asp:TextBox>

如果想输入小数点   /[^0-9]/g   改成  /[^0-9.]/g

就可以了

#19


用正则来限制

#20


  1.可以用验证控件:RegularExpressionValidator 验证 "^[0-9]*[1-9][0-9]*$";

#21


 1.可以用验证控件:RegularExpressionValidator 验证 "^[0-9]*[1-9][0-9]*$";
 
2.在后台Load事件中 
          this.textbox1.Attributes.Add("onkeyup", "验证方法");
   前台在加上
     javascript 代码 即(验证方法)
    在验证方法中写验证就可以了啊!

#22


该回复于2009-09-16 09:55:05被版主删除

#23


js+正则表达式来实现
当然也可以这样
onkeypress="Do()"

function Do()
{
var text= document.getElementById("text1");

    if(event.keyCode<48 || event.keyCode>57)
{
    text.value=text.value.substring(0,text.value.length-1);
}
}

#24


引用 2 楼 xzq686 的回复:
HTML code<inputtype="text" onkeyup="this.value=this.value.replace(/[^\d]/g,'') " onafterpaste="this.value=this.value.replace(/[^\d]/g,'') " name="f_order" value="1"/>


正解!

#25


引用 16 楼 zengfanying 的回复:
15楼的没有看清楚吗?我用的是VB2005.NET,里面没有onkeyup

不是没有,而是vs对于服务器控件中不显示html控件的事件,并不代表不能用2楼的代码估计你试都没试吧,运行一下看看

#26


第一步:
<asp:TextBox ID="TextBox1" runat=server onkeyup="value=value.replace(/[^0-9]/g,'')" > </asp:TextBox> 

第二步:
加个正则表达式验证控件,验证是否是数字

#27


最好使用正则表达式:
使用方法:
首先 引入命名空间  
          using System.Text.RegularExpressions;
添加语句
 private void textBoxlogin_id_Leave(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(textBoxlogin_id.Text.Trim()))
            {
                labeltips.Text = "登陆用户名必须为0-9的数字,长度为9-12";
                 Regex rg = new Regex("$[0-9]{9,12}");
                labeltips.Visible =! rg.IsMatch(textBoxlogin_id.Text.Trim());
            }
        }

#28


引用 25 楼 ojlovecd 的回复:
引用 16 楼 zengfanying 的回复:
15楼的没有看清楚吗?我用的是VB2005.NET,里面没有onkeyup

不是没有,而是vs对于服务器控件中不显示html控件的事件,并不代表不能用2楼的代码估计你试都没试吧,运行一下看看

正解 

#29


通过RegularExpressionValidator验证"^[0-9]*[1-9][0-9]*$" 

或者用前台方法,代码见2楼

#30


听到一块钱三样。三洋一块钱

#31


二楼 简单有实惠 帮顶

#32


正则。

#33


呵呵,多简单的正则表达式啊

#34


不好意思,我现在知道了,请问我以前用的是标准控件里面的TEXTBOX控件,和HEML里面的TEXT有什么不一样?textbox里面没有onkeypress ,而text里面有这个属性,请问textbox里面可以用这个属性吗?不是要把所有的TEXTBOX换成TEXT吧?

#35


引用 16 楼 zengfanying 的回复:
15楼的没有看清楚吗?我用的是VB2005.NET,里面没有onkeyup


不是一般的笨 你就知道C

#36


引用 34 楼 zengfanying 的回复:
不好意思,我现在知道了,请问我以前用的是标准控件里面的TEXTBOX控件,和HEML里面的TEXT有什么不一样?textbox里面没有onkeypress ,而text里面有这个属性,请问textbox里面可以用这个属性吗?不是要把所有的TEXTBOX换成TEXT吧?


看來你沒有弄清楚ASP.NET中的伺服器元件與HTML之間的差別與關係﹐
建議你重新認識一下什麼是.Net Framework什麼是ASP.NET