在文本框值更改时调用服务器端脚本

时间:2014-10-20 13:34:00

标签: c# jquery asp.net

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

我是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",链接中未提及。

2 个答案:

答案 0 :(得分:0)

  • 只有在DOM准备就绪后才会调用更改事件。无法通过动态设置值到文本框来调用它。动态设置值并在DOM准备就绪时更改值是不同的事情。前者不是变更事件,而后者是。

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

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

  });

如果你真的想从服务器端这样做,那么从jQuery代码中分配值将无法实现。当您的DOM准备就绪时,您指定的值测试已经存在。所以它不是更改事件。在DOM准备就绪后尝试分配值。您的服务器端 on-change 方法将被确认。

希望我很清楚。

谢谢!

答案 1 :(得分:0)

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

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

然后,您可以在更改文本后从jQuery调用它:

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

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