2014-10-20 45 views
0

我知道我做錯了,不知道如何繼續。請幫忙。如果有任何其他的方式!在文本框值更改時調用serverside腳本

我有一個Textbox,它使用JQuery加載。一旦文本框的值被改變,我需要調用它在OnTextChanged

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

jQuery中定義的服務器端腳本,我將數值。我有Textboxbutton。點擊這個按鈕,我打開一個窗口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

只有使用ajax才能做到這一點,如果您希望它是動態的 – SarathSprakash 2014-10-20 13:37:09

+0

AJAX的問題是,我需要用戶使用WebMethod或HTTP處理程序,我無法訪問網頁服務器控件。如果我錯了,請糾正我的錯誤! – Interstellar 2014-10-20 13:41:55

+0

你已經使用jquery動態地添加了這個文本框,所以選項是使用ajax,或者你必須在客戶端處理更改事件。 – SarathSprakash 2014-10-20 13:46:58

回答

0

您應該使用GetPostBackEventReference並創建一個js函數是這樣的:

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

然後,你將能夠從jQuery的調用這個更改後的文字:

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

這將自動回傳該頁面並調用您的Textbox1_TextChanged服務器端事件。

0
  • 更改事件只有在您的DOM準備就緒後纔會調用。它不能通過動態設置文本框的值來調用。動態設置值並在DOM準備就緒時更改值是不同的事情。前者不是更改事件,但後者是。

爲什麼不在客戶端中處理所有這些?其次on-change事件將只在您更改文本框內的值時(DOM準備就緒時)纔會被調用。我猜想,您將該值分配到文檔就緒中的文本框中。所以這不是更改事件。試試這個: -

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

    }); 

如果你真的想從服務器端做到這一點,然後從jQuery代碼分配值不會使這項工作。當您的DOM準備好時,您正在分配的值測試已經存在。所以這不是更改事件。在您的DOM準備好之後,嘗試使用assgning值。您的服務器端電平變化方法將被確認。

希望我很清楚你。

謝謝!

+0

我試過onchange的 html控件,但它沒有'工作。我已經更新了這個問題,以瞭解爲什麼我需要服務器腳本。 DOM準備就緒時,我不會分配文本框的值。 – Interstellar 2014-10-20 14:07:40

相關問題