首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 怎样让TextBox只允许输入数字呀~~ [已结贴,结贴人:dmgywan]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dmgywan
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-19 18:54:14 楼主
    rt
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chenhui530
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 18:57:421楼 得分:30
    Private Sub Text1_KeyPress(KeyAscii As Integer)
        If Not IsNumeric(Chr(KeyAscii)) Then
            KeyAscii = 0
        End If
    End Sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • happy_sea
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 3

      2

    发表于:2008-08-19 20:06:272楼 得分:30
    VB code
    Private Sub Text1_KeyPress(KeyAscii As Integer) select case keyascii case 48 to 57 '数字 case 8 '退格键 case else keyascii=0 end select End Sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • szyss
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 21:22:453楼 得分:5
    请参考如下代码,TEXTBOX只能输入数字。
    VB code
    Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii <> 8 And KeyAscii <> 127 Then If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0 End If End Sub

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Leftie
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 21:55:354楼 得分:5
    VB code
    '限制只输入数字的话还要考虑输入负号与输入小数点时的情况,我一般是输入结束后判断是否为数据格式: private sub text1_lostfocus() if trim(text1.text)<>"" then if not isnumeric(text1.text) then msgbox "请输入数值型数据!",48,"提示" text1.text="" text1.setfocus end if end if end sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Modest
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      2

      3

    发表于:2008-08-19 22:03:265楼 得分:0
    哇咔咔 这么多版本
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • DengXingJie
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 22:50:056楼 得分:0
    俺也来凑凑热闹,可输入负号、点号的版本

    VB code
    Private Sub Text1_KeyPress(KeyAscii As Integer) Dim i As Integer Dim j As Integer If KeyAscii > 57 Or KeyAscii < 48 And KeyAscii <> 46 And KeyAscii <> 8 And KeyAscii <> 13 And KeyAscii <> 45 Then Text1.Locked = True ElseIf KeyAscii = 46 Then i = InStr(Text1.Text, ".") j = Len(Trim(Text1.Text)) If j = 0 Then Text1.Locked = True ElseIf i = 0 Then Text1.Locked = False Else Text1.Locked = True End If ElseIf KeyAscii = 45 Then j = Len(Trim(Text1.Text)) If j = 0 Then Text1.Locked = False Else Text1.Locked = True End If Else Text1.Locked = False End If End Sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fighterhht
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 23:02:187楼 得分:30
        Dim lOldStytle As Long
        Dim ret As Long
       
        Const GWL_STYLE = (-16)
        Const ES_NUMBER = &H2000
        lOldStytle = GetWindowLong(Text1.hWnd, GWL_STYLE)
        lOldStytle = lOldStytle Or ES_NUMBER
        ret = SetWindowLong(Text1.hWnd, GWL_STYLE, lOldStytle)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yachong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 23:18:178楼 得分:0
    引用 5 楼 Modest 的回复:
    哇咔咔 这么多版本

    八仙过海,哈哈
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Modest
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      2

      3

    发表于:2008-08-19 23:45:599楼 得分:0
    引用 7 楼 fighterhht 的回复:
        Dim lOldStytle As Long
        Dim ret As Long
       
        Const GWL_STYLE = (-16)
        Const ES_NUMBER = &H2000
        lOldStytle = GetWindowLong(Text1.hWnd, GWL_STYLE)
        lOldStytle = lOldStytle Or ES_NUMBER
        ret = SetWindowLong(Text1.hWnd, GWL_STYLE, lOldStytle)


    正解,赞一个。

    我补一个完整版本吧:
    VB code
    Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Const GWL_STYLE As Long = -16 Private Const ES_NUMBER As Long = &H2000& Private Sub Form_Load() Dim lOldStytle As Long Dim ret As Long lOldStytle = GetWindowLong(Text1.hwnd, GWL_STYLE) lOldStytle = lOldStytle Or ES_NUMBER ret = SetWindowLong(Text1.hwnd, GWL_STYLE, lOldStytle) End Sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • binuisoft
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 08:27:2310楼 得分:0
    Private Sub Text1_KeyPress(KeyAscii As Integer)
       
        If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> Asc(".") And KeyAscii <> 8 Then
            KeyAscii = 0
        End If
       
    End Sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhufenghappy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 08:52:4311楼 得分:0
    引用 10 楼 binuisoft 的回复:
    Private Sub Text1_KeyPress(KeyAscii As Integer)
       
        If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> Asc(".") And KeyAscii <> 8 Then
            KeyAscii = 0
        End If
       
    End Sub


    补充一点,不能输入两个小数点
    Private Sub Text1_KeyPress(KeyAscii As Integer)
       
        If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> Asc(".") And KeyAscii <> 8 Then
            KeyAscii = 0
        End If
        If KeyAscii = Asc(".") And InStr(Text1.Text, ".") > 0 and  leThen
            KeyAscii = 0
        End If
       
    End Sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sysdzw
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 09:07:1512楼 得分:0
    引用 7 楼 fighterhht 的回复:
        Dim lOldStytle As Long
        Dim ret As Long
       
        Const GWL_STYLE = (-16)
        Const ES_NUMBER = &H2000
        lOldStytle = GetWindowLong(Text1.hWnd, GWL_STYLE)
        lOldStytle = lOldStytle Or ES_NUMBER
        ret = SetWindowLong(Text1.hWnd, GWL_STYLE, lOldStytle)

    这个方法不错,第一次见到
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fvflove
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2008-08-20 09:14:0613楼 得分:0
    VB code
    '好象是个难题.还有输入正负号. '还有如果人家是复制.粘贴. '当然还有我没有想到的情况.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fvflove
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2008-08-20 09:21:5214楼 得分:0
    VB code
    '我的想法是,在改变内容的时间进行设置. '如果改变后还是数值型,就保存起来. '如果改变后不是数值型,就让他改为前一次的保存结果. Option Explicit Private OldText As Double Private Sub Text1_Change() If IsNumeric(Text1.Text) Then OldText = Text1.Text Text1.SelStart = Len(Text1.Text) Else Text1.Text = OldText Text1.SelStart = Len(Text1.Text) End If End Sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pdsnet
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 09:25:2915楼 得分:0
    利用正则表达式限制网页表单里的文本框输入内容:

    用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"

    用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF] /g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"

    用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

    用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • huke1987
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 09:27:1716楼 得分:0
    Private Sub Text_GaoShu_KeyPress(KeyAscii As Integer)
        If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 8 Then
            KeyAscii = 0
        End If
    End Sub
    这样也行
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • E_wait
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 09:28:2217楼 得分:0
    <asp:textbox class="Text"
    onkeypress="if (event.keyCode < 48 || event.keyCode >57) event.returnValue = false;"
    id="txtY_Revenue" style="TEXT-ALIGN: right" runat="server" Width="90%" MaxLength="12">
    </asp:textbox>
    说明: 此方法控制TextBox只收数字:0~9 , 也自可以定义其它可输入字符,如改成: 65~123,只允许输入: a~z和A~Z 等.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ll_abc20
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 09:31:2318楼 得分:0
    IsNumeric(Text1.Text)  检查输入的是否为数字,如果是数字返回TRUE
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lcdsda
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 09:39:3919楼 得分:0
    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                e.Handled = !(char.IsDigit(e.KeyChar) ¦ ¦(e.KeyChar == 8) ¦ ¦(e.KeyChar == 45) ¦ ¦(e.KeyChar ==46)); 
            }

    上面是我在另外一个帖子的回复
    http://topic.csdn.net/u/20080805/14/6583cd12-8e2a-4a09-a1f5-acc2236d5345.html
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fan5561662
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 09:39:5920楼 得分:0
    只有VB的啊,有没有JAVA,或是.NET的解决方法啊 ?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lcdsda
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 09:43:1721楼 得分:0
    原来是vb的,看错了,还是希望对你有帮助

    引用 20 楼 fan5561662 的回复:
    只有VB的啊,有没有JAVA,或是.NET的解决方法啊 ?


    我19楼的回复是.NET的解决方案
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qiuming0306
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 09:43:3722楼 得分:0
    HTML code
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title></title> <script type="text/javascript"> //正整数的验证 function valNum(ev) { if(window.event.shiftKey) { ev.returnValue = ""; } else { var e = ev.keyCode; //允许的有大、小键盘的数字,左右键,backspace, delete, Control + C, Control + V if(e != 48 && e != 49 && e != 50 && e != 51 && e != 52 && e != 53 && e != 54 && e != 55 && e != 56 && e != 57 && e !=