我知道我做错了,不知道如何继续。请帮忙。如果还有其他方式!
我是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"
,链接中未提及。
答案 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服务器端事件。