【问题标题】:the program doesn't recognize onkeyup event- asp.net该程序无法识别 onkeyup 事件-asp.net
【发布时间】:2020-12-12 21:38:10
【问题描述】:

我已经阅读了每个论坛,包括这个关于 onkeyup 事件的论坛,我尝试了所有方法,但没有任何反应:

我有这个 JavaScript 代码:

<script type="text/javascript">
    function Count() {
        var i = document.getElementById('txtOr').value.length;
        document.getElementById('lblRem').innerHTML = 20 - i; 
    }
</script>

这是aspx代码:

<asp:TextBox ID="txtOr" runat="server" Font-Size="X-Large"  Height="700px" Width="100%" TextMode="MultiLine"  OnTextChanged="txtOr_TextChanged" ClientIDMode="Static" onkeyup="Count()"></asp:TextBox>
<asp:Label Text="20" runat="server" ID="lblRem" style="font-size:20px"/>

我已经尝试了我在网上阅读的所有方法:

  • 在c# Page_Load 方法中添加txtOr.Attributes.Add("onkeyup","Count()") [没用]

  • 在 Js 代码中这样做:在此处输入代码`

    function Count() {var i = document.getElementById("&lt;%=txtOr.ClientID%&gt;").value.length; document.getElementById('lblRem').innerHTML = 20 - i; }

[没用]

谁有解决办法?

【问题讨论】:

  • document.getElementById('lblRem')也需要用到ClientID
  • @GuyIncognito 我试过了,在任何情况下都会出现这个错误: System.Web.HttpException: 'A page can only one server-side Form tag.'
  • 这是一个无关的问题。
  • @GuyIncognito 你的意思是这样做对吗?:...getElementById('')

标签: javascript c# asp.net textbox onkeyup


【解决方案1】:

JavaScript 很痛苦,因为大小写很重要。

此代码将起作用 - 请注意 onKeyUp 的“大小写”设置

OnKeyup - wrong!
onkeyup - wrong!
Onkeyup - wrong!
ONKEYUP - wrong!

OnKeyUp - correct!!

Note ALSO that you must pass "event" (and again that "event" matters)


        <asp:TextBox ID="TextBox1" runat="server" 
            Height="191px" TextMode="MultiLine" Width="422px"
            OnKeyUp="mykeypress(event);return false;"
            ClientIDMode="Static"></asp:TextBox>
        <br />
       <script>

            function mykeypress(e) {

                console.log('key press value = ' + e.keyCode);
                if (e.keyCode == 13) {

                    alert('you hit the enter key!');
                    // ' get value of text in text box
                    var mytbox = document.getElementById('TextBox1');
                    alert(mytbox.value);

                    // get text box WITHOUT CientIDMode=Static

                    var mytbox2 = document.getElementById('<%= TextBox1.ClientID %>');
                    alert(mytbox2.value);
                }
            }
        </script>

如前所述,既然 asp.net 预处理器可以并且将会“更改”页面上控件的“ID”值吗?然后您可以使用第二种方法来获取/获取对控件(文本框)的引用。或者您可以设置控件 ClientIDMode="Static"。我经常为 jQuery 弹出框,一些 div(s)(runat=server - 我不希望“id”改变,所以我经常简单地使用 ClientIDMode = static)。

另外,别忘了 - OnKeyUp="somefunc(event);" - 不要忘记“事件”部分,否则它也不起作用。

【讨论】:

  • 所以在你的例子中 13 是输入的键码?当然,我明白了,但就我而言(我的问题)我是否也应该通过一个活动?
  • 是的。但在这种情况下,“事件”并不是真正的事件,而只是一个“值”,它允许您将按键“对象”发送到函数例程。因此,“事件”更像是给定类型的对象。并且您使用 event.KeyCode 来获取 keypress 的值。 (是的,13 = 输入键 65 = "A" 等等。大部分都是很好的老式 ASCII 数字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多