【问题标题】:Why onTextChanged not working in ASP.net [duplicate]为什么 onTextChanged 在 ASP.net 中不起作用 [重复]
【发布时间】:2014-05-29 17:08:29
【问题描述】:

我的 ASP.net 页面中有以下文本框:

<asp:TextBox OnTextChanged="maxchar" ID="txtName" Width="95%" runat="server"></asp:TextBox>

我的代码隐藏中的以下内容:

protected void maxchar(object sender, EventArgs e)
{
    if (txtName.Text.Length > 25)
    {
        lblIsValid.Text = "only 25 characters allowed";
    }
}

当我在文本框中输入文本并超过 25 个字符时,标签中不会显示任何内容。我该如何解决?

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    在这种情况下,对于最大长度,您应该使用名为 MaxLength="25" 的 asp:textbox 属性。

    但是,如果您想向用户发送消息,我建议使用 JQuery,这很简单:

    $('#txtName').keyDown(function(){
         if($(this).length >= 25){
            //you alert
         }; 
    });
    

    【讨论】:

    • 请记住,如果文本框有 textMode=MultiLine,则 MaxLength 不起作用
    • 是的! JQuery 是最好的方法! (对我来说)。
    【解决方案2】:

    OnTextChanged 仅在回发MSDN reference 期间发生。

    你需要添加 javascript 来做你想做的事情,因为 javascript 在本地运行它不需要回发。

    如果你不想要javascript,你将不得不等待用户提交页面,这是无javascript网页不可避免的限制。

    【讨论】:

    • 我试图避免,因为用户可能禁用了 JS:/
    • @SiKni8:如果您不想等待回发并且不想使用 JS,则没有办法做到这一点。您可以尝试让文本框回发每个字符,但效果不佳。
    • 除非你想每次都回发(这很荒谬),否则你必须使用 JS。
    • @BenBlack:等待提交还不错,如果我在浏览器中禁用 JS,这就是我所期望的。
    • @Guvante - 这不一定是真的。如果他使用 HTML5,他可以向文本框添加“必需”属性和“最大长度”属性。见demo here
    【解决方案3】:

    很确定应该是 TextChanged 并且 OnTextChanged 应该是 JavaScript 调用(我相信)。无论哪种方式,您都应该在 JS 中执行此操作。应避免在每个文本更改事件上调用服务器。

    在 jQuery 中你可以这样做

    $('#txtTime').changed(function(){
        // do event logic here
    });
    

    现在希望您正在使用 jQuery。如果没有,我可以更新香草 JS。

    【讨论】:

    • JQuery 会做,除非浏览器禁用 JS...
    • 然后等待用户提交页面并进行服务器端检查。从来没有说过你应该放弃做服务器端验证,只是也许不要强迫用户回发每一个变化。 真的不利于用户体验。
    • 我当然同意你的看法。我将为前端添加 JQuery,如果它被禁用,我还将进行服务器检查。我尝试使用 HtmlEncode,它一直给我的应用程序一个错误。
    【解决方案4】:

    您是否尝试过在 asp:TextBox 声明中设置 autopostback="true"?快速搜索也出现了this article,也许会有所帮助。

    【讨论】:

      猜你喜欢
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-27
      • 2022-11-04
      • 2016-06-16
      • 1970-01-01
      • 2018-06-30
      相关资源
      最近更新 更多