2010-03-01 39 views
0

假設有一個ASP.NET .NET 3.5站點。ASP.NET jQuery函數調用

沒有與此的jquery的javascript連接到它限定的asp:TextBox

$("#myTextBox").change(function() {}); 

這意味着如果用戶改變文本時,該功能將被調用。 當然,它的工作原理。

問題是我已經制作了一個按鈕,其中的EventHandler它會自動使用默認值填充此TextBox。往返/頁面重新加載發生並且新值被正確設置。有所不同的是,jquery函數change()不叫;

而且我需要調用該函數,因爲它設置了一個變量來決定文本是否已被更改。

EDITED:

該變量被設置爲檢查用戶是否提供一些輸入。如果是這樣的話,它爲他提供了保存它的可能性。

問題不是變量沒有設置,當有人點擊Button(這使得一個值自動填充),問題是Button導致頁面重新加載和var值丟失。我需要保持這個值,直到用戶試圖離開頁面。

反射

也許我可以設置cookie在頁面重新加載...

回答

0

看起來像你應該設置這個其他變量,一個指示值是否已經改變,從代碼後面的值改變。換句話說,看起來你需要在兩個地方做到這一點。

或者,您可以更改按鈕以通過javascript設置值,並將其設置爲OnClientClick處理程序,而不是它的OnClick處理程序。確保OnClientClick的結尾返回false,以避免回發。在這種情況下,您可以完全避免回發,並且您的問題將得到解決。

<asp:Button runat="server" ID="someId" OnClientClick="$('#myTextBox').val('someValue');return false;"/> 
+0

確定,但按鈕單擊接收並解析MS報告中的數據..然後這些數據用作TextBox的值。我怎麼能在OnClientClick中做到這一點?對不起,我不習慣在js中寫任何東西.. –

1

你可能需要調整ID,如果它裏面什麼:如果我理解

$("#<%=myTextBox.ClientID %>").change(function() {}); 
1

您正確的情況下,如果值已更改,您就知道服務器端。那麼只要確保你輸出

$('#myTextBox').change(); 

當這種情況。你可以把這段代碼放在一個佔位符中,並在按鈕事件處理程序中切換一個布爾值,以確定佔位符是否被渲染。

+0

Page.ClientScript。RegisterClientScriptBlock是一個奇妙的功能(如果你被困在ASP.NET-land中) - 查看它。 =) –

+0

啊,對。幾年前,我跳過了ASP.NET MVC的潮流,所以我已經忘記了那個:-) – Rune

+0

我*希望*我可以跳過這個特殊的潮流。 –

0

嘗試:

$('[id$=myTextBox]').change();