簡體   English   中英

無法在服務器端訪問客戶端更改標簽文本

[英]Changing Label Text on client side are not accessible on server side

我有下面的標題標簽

Billed Amount:
<label >$</label>
<asp:Label ID="billed"  runat="server" Text="0.00"></asp:Label>

我也有兒童中繼器與文本輸入如下

 <asp:Repeater runat="server" ID="rpt" >
     <HeaderTemplate>
         ....
     </HeaderTemplate>
     <ItemTemplate>
         <asp:TextBox ID="txtB" onchange="AmountChanged(this)" Text='<%# Bind("Billed") %>' />
     </ItemTemplate>
     <FooterTemplate>
         </table>
     </FooterTemplate>
 </asp:Repeater>

在AmountChanged JavaScript函數中,我編寫了求和所有轉發器項目的計費金額並更改標頭值的功能

但是,當我獲取標簽值時,它只會作為先前值使用。 JavaScript更改不適用於服務器端。

最簡單的方法是添加HiddenField 每當您為billed標簽分配一個值時,您還將其分配給BilledHiddenField HiddenField。

然后,您可以在服務器端讀取BilledHiddenField.Value而不是billed.Text

<asp:Label ID="billed"  runat="server" Text="0.00"></asp:Label>
<asp:HiddenField id="BilledHiddenField" runat="server" />

標簽不會在回發中保留。 解決此問題的一種好方法是重新計算總負載:

我們可以添加一些data-屬性,以便我們輕松標識元素

<asp:Label data-billed="" runat="server" ID="billed"></asp:Label>
<asp:TextBox runat="server" ID="txtB" data-amount="" Text='<%# Eval("Billed") %>'></asp:TextBox>

然后計算總負載:

var amount = 0;

$("[data-amount]").each(function (index, el) {
    if ($(el).val()) {
        amount += parseInt($(el).val(), 10);
    }
});

$("[data-billed]").text(amount);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM