检索已禁用的ASP.NET文本框的值

时间:2011-08-10 02:24:26

标签: asp.net textbox

我有3个ASP.NET文本框和一个HiddenField。 第三个文本框的值(禁用此选项)取决于其他两个文本框的值。

公式是

  

txtPricepad = txtPrice / txtCarton

<asp:TextBox ID="txtPriceCase" runat="server" onblur="javascript:GetPricePerPad();></asp:TextBox>
<asp:TextBox ID="txtCarton" runat="server"></asp:TextBox>
<asp:TextBox ID="txtPricePad" Enabled="false" runat="server" ></asp:TextBox>
<asp:HiddenField ID="hdPricepad" runat="server"/>

  function GetPricePerPad()
  {
    var priceCase   = document.getElementById('ctl00_content_txtPriceCase').value;
    var cartons     = document.getElementById('ctl00_content_txtCarton').value;
    var res         = Number(priceCase) / Number(cartons);

    document.getElementById('ctl00_content_txtPricePad').value = res;
    document.getElementById('ctl00_content_hdPricepad').value = res;
  }

假设txtPricePad的初始值为0且txtCarton为12。   当txtPrice的值更改为1200时,将调用GetPricePerPad(),因此txtPricePad将为100。

Javascript成功将txtPricePad的值更改为100但是当我从代码隐藏调用txtPricePad时,其值仍为0。   这就是我将公式的结果分配给HiddenField的原因。还有其他方法吗?我不想再使用HiddenField。

2 个答案:

答案 0 :(得分:10)

Liz,您是否可以将文本字段设为readonly(ReadOnly = True),而不是将其设为Disabled = True?原因是当禁用文本字段时,不会使用POST请求中的表单提交。 See this question.

如果你想让它看起来好像被禁用了,我想你可以将CssClass应用于按钮。

答案 1 :(得分:2)

我会使用2个选项中的一个

  1. 从其他输入
  2. 再次执行服务器端计算
  3. 使用javascript在表单提交上启用txtPricePad字段,请参阅下面的

    var pricePad = document.getElementById(&lt;%= txtPricePad.ClientID%&gt;);

    pricePad.disabled = false;