【问题标题】:call serverside script upon textbox value change在文本框值更改时调用服务器端脚本
【发布时间】:2014-10-20 13:33:59
【问题描述】:

我知道我做错了,不知道如何继续。请帮忙。如果有其他办法!

我有一个Textbox,它是使用JQuery 加载的。更改文本框值后,我需要调用OnTextChanged中定义的服务器端脚本

<asp:TextBox runat="server" ID="Textbox1"  OnTextChanged="Textbox1_TextChanged" AutoPostBack="true"/>

在 JQuery 中,我已经分配了值。我有一个Textbox 和一个button。单击此按钮后,我会打开一个带有TreeView 的窗口。从TreeView 中选择值后,我需要填充文本框并且需要刷新一些Server controls。这是我需要Textbox1_TextChanged服务器调用的地方

 $('#Textbox1').val("TreeView Selected Value");

一旦分配了这个值,我需要调用Textbox1_TextChanged 事件被调用。更改文本框值后未调用服务器端方法!

解决方案:

这是一篇关于如何从 JavaScript 实现回发的好文章。 http://www.dreamincode.net/forums/topic/217965-calling-c%23-event-in-javascript/ 。还要在链接中未提及的页面中添加EnableEventValidation="false"

【问题讨论】:

  • 如果你希望它是动态的,你只能通过使用 ajax 来做到这一点
  • AJAX 的问题是,我需要使用 WebMethod 或 HTTP 处理程序,我无法访问网页服务器控件。如果我错了,请纠正我!
  • 您已经使用 jquery 动态添加了此文本框,因此可以选择使用 ajax,或者您必须在客户端处理更改事件。
  • 手动输入文本是否会触发 OnTextChange 事件? ...您还可以使用 UpdatePanel 往返于服务器 stackoverflow.com/questions/6361680/…

标签: c# jquery asp.net


【解决方案1】:

你应该使用 GetPostBackEventReference 并创建一个这样的 js 函数:

function Textbox1_OnChange() {
    <%=Page.GetPostBackEventReference(Textbox1, "TextChanged")%>;
}

然后你就可以在你改变文本后从 jQuery 中调用它了:

 $('#Textbox1').val("TreeView Selected Value");  // your code  
 Textbox1_OnChange(); // new line

这将自动回发页面并调用您的 Textbox1_TextChanged 服务器端事件。

【讨论】:

    【解决方案2】:
    • 更改事件仅在您的 DOM 准备好后调用。不能通过动态设置文本框的值来调用它。在DOM 准备就绪时动态设置值和更改值是不同的事情。前者不是change-event,但后者是。

    为什么不只在客户端处理所有这些?其次,on-change 事件只会在您更改文本框内的值时调用(当DOM 准备就绪时)。您正在将值分配给 document-ready 我猜的文本框。所以这不是一个 change 事件 。试试这个:-

      $("#TextBox1").on('change',function(){
        //your logic ;    
    
      });
    

    如果您真的想从 服务器端 执行此操作,那么从 jQuery 代码分配值将无法实现。当您的DOM 准备就绪时,您分配的值 Testing 已经存在。所以这不是一个 change 事件 。在您的 DOM 准备好之后尝试分配值。您的服务器端 on-change 方法肯定会被调用。

    希望我对你很清楚。

    谢谢!!

    【讨论】:

    • 我尝试了 html 控件的 onchange,但没有成功。我已经更新了问题以了解我为什么需要服务器脚本。当 DOM 准备好时,我没有分配文本框值。
    猜你喜欢
    • 1970-01-01
    • 2011-10-29
    • 2014-05-10
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    相关资源
    最近更新 更多