2013-02-15 71 views
0

這裏是我的HTML代碼HiddenField的值使用JQuery設置,但值不能在讀取代碼隱藏

<table> 
    <tr> 
    <th> 
     Department Comments: 
    </th> 
    <td> 
     <asp:TextBox ID="txtDepartmentComments" runat="server" Columns = "45" 
       TextMode = "MultiLine" CssClass = "txtComments" ></asp:TextBox> 
     <asp:HiddenField ID = "hfDptComments" runat = "server" /> 

    </td> 
    <td> 
     <asp:Button ID="btnComplete" runat="server" Text="Completed" 
      CssClass = "button-save" /> 
    </td> 
    </tr> 
</table> 

這裏是我的jQuery代碼

$('[id*="btnComplete"]').click(function() { 
    var $val = $(this).closest('tr').find('[id*="txtDepartmentComments"]').val(); 
    var hfDptComments = $(this).closest('tr').find('[id*="hfDptComments"]'); 
    $(hfDptComments).prop('value', $val); 

    alert($(hfDptComments).val()); 
}); 

而這僅僅是一個虛擬的代碼測試值是否被髮送到服務器。

protected void Page_Load(object sender, EventArgs e) 
{ 
    string strDptComments = this.hfDptComments.Value; 
} 

當我鍵入內容並運行應用程序時,javascript框消息顯示我輸入的內容。但是,當我在代碼後面放置一個斷點時,我總是會得到一個空字符串。

任何想法爲什麼?

感謝您的幫助

+0

記那個'Page_Load'被稱爲_before_正在運行設置隱藏字段的javascript;如果在javascript填充值後提交會發生(通過按鈕或任何回發的控件),那麼_will_將獲得值 – mshsayem 2013-02-15 17:43:16

+0

@mshsayem他可能是單擊了一個按鈕,該按鈕同時執行回發,並且將調用page_load再次...所以我懷疑這是問題。 – scartag 2013-02-15 17:45:02

+0

我避免直接​​在代碼中添加標記的原因是因爲控件(即按鈕,textarea和hiddenfield)位於位於中繼器內的用戶控件內。因此,標記會很長並且令人困惑。 – Richard77 2013-02-15 18:08:38

回答

1

你應該嘗試設置使用.val()代替

$(hfDptComments).val($val); 
+0

仍然沒有運氣。 strDptComments仍然是一個空字符串。 – Richard77 2013-02-15 17:48:51

+0

現在我感覺這個問題與JQuery無關。這一定是ASP.NET工作的方式。這些控件,即按鈕,textarea和hiddenfield位於位於中繼器內的用戶控件內。當頁面回傳時,由於原因仍然未知,在代碼隱藏中不能讀取任何值。 – Richard77 2013-02-15 18:12:31

+0

@ Richard77你可以發佈整個aspx頁面和整個代碼隱藏嗎?我認爲這真的會有所幫助 – scartag 2013-02-15 18:14:41

0

嘗試使用這個值:

hfDptComments.prop('value', $val); 

hfDptComments.attr('value', $val); 

hfDptComments.val($val); 

hfDptComments它已經是一個jQuery對象。嘗試其中之一。

0

常寫您的javascript函數(無事件通過jQuery綁定),如:

function SetMyValue() { 
    var $val = $('#<%# btnComplete.ClientID %>').closest('tr').find('[id*="txtDepartmentComments"]').val(); 
    var hfDptComments = $(this).closest('tr').find('[id*="hfDptComments"]'); 
    $(hfDptComments).val($val); 
} 

套裝OnclientClick在按鈕的標記(這是會回傳)屬性,如:

<asp:Button ID="btnComplete" runat="server" Text="Completed" OnClientClick="return SetMyValue();" 
      CssClass = "button-save" /> 
相關問題