Javascript 文本框中的验证文本在返回false后仍显示文本

Javascript 文本框中的验证文本在返回false后仍显示文本,javascript,asp.net,regex,Javascript,Asp.net,Regex,我有一个文本框,我只想输入数值。现在我有这个函数 function validate(evt) { var theEvent = evt || window.event; var key = theEvent.keyCode || theEvent.which; key = String.fromCharCode(key); var regex = /[0-9]|\./; if (!regex.test(ke

我有一个文本框,我只想输入数值。现在我有这个函数

    function validate(evt) {
        var theEvent = evt || window.event;
        var key = theEvent.keyCode || theEvent.which;
        key = String.fromCharCode(key);
        var regex = /[0-9]|\./;
        if (!regex.test(key)) {
            theEvent.returnValue = false;
            if (theEvent.preventDefault) theEvent.preventDefault();
        }
    }
这是我的aspx文本控件

   <asp:Panel ID="PanelAddPhoneNumber" runat="server" Style="display: none; min-width: 500px; min-height: 500px;" Title="Add Phone Numbers">
    <asp:UpdatePanel ID="UpdatePanelAddPhoneNums" runat="server" UpdateMode="Always">
        <ContentTemplate>
            <table>
                <tr>
                    <td>
                        <asp:TextBox runat="server" ID="txtPhoneNum" type="text" AutoPostBack="true"  />
                      </td>
                </tr>
            </table>
          </ContentTemplate>
       </asp:UpdatePanel>
</asp:Panel>

我的函数被调用,一切似乎都“正常”,但如果我按下“G”,它将在我的函数中命中if并返回false,还将命中theEvent.preventedefualt()

但是我的文本框仍然显示“G”?!这是不对的

编辑:我在我完整的aspx侧面板中添加了。我也试过了

$(文档).ready(函数(){ $('').keydown(函数(事件){

但似乎什么都不起作用。 也许更新面板在某种程度上造成了干扰?我很抱歉,如果情况是OP中所述的话,我相信您的解决方案会解决它,两个版本都会对它们进行投票。

您可以直接使用。它很简单:)

编辑:

如果要在不使用任何lib的情况下对其进行验证,请参见下面的示例:

 $(document).ready(function () {
            $("#txtPhoneNum").keydown(function (event) {
                // Allow: backspace, delete, tab, escape, and enter
                if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
                    // Allow: Ctrl+A
                    (event.keyCode == 65 && event.ctrlKey === true) ||
                    // Allow: home, end, left, right
                    (event.keyCode >= 35 && event.keyCode <= 39)) {
                    // let it happen, don't do anything
                    return;
                }
                else {
                    // Ensure that it is a number and stop the keypress
                    if (event.shiftKey || (parseInt(event.target.value) == 1 && event.keyCode > 48) || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) {
                        event.preventDefault();
                    }
                }
            });
        });
$(文档).ready(函数(){
$(“#txtPhoneNum”).keydown(函数(事件){
//允许:退格、删除、制表符、转义和回车
如果(event.keyCode==46 | | | event.keyCode==8 | | event.keyCode==9 | | event.keyCode==27 | | event.keyCode==13||
//允许:Ctrl+A
(event.keyCode==65&&event.ctrlKey==true)||
//允许:起始、结束、左、右

(event.keyCode>=35&&event.keyCode是的,但我正在为客户开发软件,所以不幸的是,我不太清楚哪些版权限制插件可能是免费的。我只是不想通过使用预先制作的东西来冒险。但我很感谢你的回答。是的,但看起来还是没有来解决我的问题。我的断点显示我命中了event.PreventDefault(),但它仍然允许角色通过