我有一个GridView里面包含了一个TextBox,用来显示一列NO号,并且用户可以自己输入。当输入的时候我想让它只能输入半角的数字,应该怎么做呢?应该在什么事件里面写呢?相关的html代码是这样的:
<asp:GridView ID="gridViewSozai" runat="server" BackColor="White" >
 <asp:TemplateField HeaderText="パーツNO">
     <ItemTemplate>
        <asp:TextBox ID="txtSpartsNo" Width="50px" runat="server"  Text='<%# Bind("SpartsNo") %>'></asp:TextBox>
     </ItemTemplate>
      <FooterTemplate>
       <asp:TextBox ID="txtNewSpartsNo" Width="50px" runat="server"></asp:TextBox>
       </FooterTemplate>
  </asp:TemplateField>
</asp:GridView>

解决方案 »

  1.   

    给textbox加keydown事件,在里面判断是否是你要允许输入的数字,如果不是就取消按键。
    只不过这个你要照顾到是否按下了组合键,比如Ctrl+C等等
      

  2.   

    1.可以在keydown事件中对输入进行判断,获取或阻止输入。2.可以在用户完成输入后,判断或直接将所有输入转换为半角。
      

  3.   

    textbox有个属性,可设置 输入的状态 IDM
      

  4.   

    参考:
        function isWrongNumber(s)                              
            {
                if (s.length > 0)
                {
                    var re = /^[0-9]*(\d*)?$/;
                    if (!re.test(s)) {
                        alert("请输入正确的天数!");
                        return false;
                    }
                } else {
                    alert("请填写天数!");
                    return false;
                }
                return true;
            }   <input id="txtDaysNeed" runat="server" maxlength="3" onblur="if(!isWrongNumber(this.value)){this.value='';}" type="text" />
      

  5.   

    输入后,在转换比较简单。
    将字符串中的全角字符转换为半角//判断字符是否英文半角字符或标点
        //32    空格
        //33-47    标点
        //48-57    0~9
        //58-64    标点
        //65-90    A~Z
        //91-96    标点
        //97-122    a~z
        //123-126  标点
        public static bool IsBjChar(char c)
        {
            int i = (int)c;
            return i >= 32 && i <= 126;
        }    /// 判断字符是否全角字符或标点
        /// 全角字符 - 65248 = 半角字符
        /// 全角空格例外    public static bool IsQjChar(char c)
        {
            if (c == '\u3000')
            {
                return true;
            }
            int i = (int)c - 65248;
            if (i < 32)
            {
                return false;
            }
            else
            {
                return IsBjChar((char)i);
            }
        }    /// 将字符串中的全角字符转换为半角
        public static string ToBj(string s)
        {
            if (s == null || s.Trim() == string.Empty)
            {
                return s;
            }
            else
            {
                StringBuilder sb = new StringBuilder(s.Length);
                for (int i = 0; i < s.Length; i++)
                {
                    if (s[i] == '\u3000')
                    {
                        sb.Append('\u0020');
                    }
                    else if (IsQjChar(s[i]))
                    {
                        sb.Append((char)((int)s[i] - 65248));
                    }
                    else
                    {
                        sb.Append(s[i]);
                    }
                }
                return sb.ToString();
            }
        }
      

  6.   


    这个好像是WINFORM里面可以用的吧……
      

  7.   

    呵呵,终于搞定了……其实很简单的。定义一个CSS样式,ime-mode:inactive时为半角,ime-mode:active则为全角。再然后在相对应的TextBox中调用这个CSS样式即可。大家试试吧……谢谢!!!