文本框值未分配给 asp.net 中的变量

本文关键字:net 变量 asp 分配 文本 | 更新日期: 2023-09-27 18:31:17

Java 脚本

function outputtax() 
 { 
 var tamount = parseFloat(document.getElementById('<%=txtpsubtotal.ClientID%>').value);
 var cash = parseFloat(document.getElementById('<%=txtpdiscount.ClientID%>').value);
 if (isNaN(tamount) != true && isNaN(cash) != true && isNaN(tax) != true)
  {
    document.getElementById('<%=txtPtotalamout.ClientID%>').value =
       Math.round(parseFloat(document.getElementById('<%=txtpsubtotal.ClientID%>').value)
  - parseFloat(document.getElementById('<%=txtpdiscount.ClientID%>').value))              
      return false;
    }
  }
<asp:TextBox ID="txtPtotalamout" runat="server" ReadOnly="true">
                                          </asp:TextBox>

。.CS

objsupplyPL.totalamount = Convert.ToDouble(txtPtotalamout.Text.ToString());

值显示在文本框中,但是当我单击保存按钮时,txtptotalamount得到 null值。如果我放置readonly="false"它工作正常。

文本框值未分配给 asp.net 中的变量

来自 http://codecorner.galanter.net/2009/10/09/postback-disabled-textbox/

假设在 ASP.NET 应用程序中,将 TextBox 控件的属性"只读"设置为 True(或"启用"设置为 False),以防止用户直接输入数据。但是您仍然希望通过客户端 JavaScript 更新该文本框的值。正在发生,可以更新值。 但是在回发到服务器的过程中 - 惊喜,惊喜!– 新值不会保留。这是由于安全预防措施 - 如果值不是要更改的 - 则不允许更改。但是有一种方法可以解决这个问题。

诀窍是 - 保持ReadOnly = FalseEnabled = True并模拟他们的行为。 将以下行添加到服务器端代码:

TextBox1.Attributes["onclick"] = "this.blur();"

其中,文本框 1 是文本框控件。此行的作用是将客户端行为添加到文本框中。一旦用户尝试单击文本框,焦点就会立即丢失,从而阻止用户输入数据,从而使文本框基本上是只读的。为了进一步效果,您可以将文本框的背景设置为"浅灰色"之类的内容,使其显示为禁用。

您希望能够保存"txtPtotalamout"中的结果,但不希望它是可编辑的。

你可以只使用

<div id="PTotalAmount"><asp:Label id="PTotalAmount" runat="server" /></div>
<asp:HiddenField ID="hPTotalAmount" runat="server" />

以显示它,并更新该 DIV 的内容和 javascript 中的隐藏字段。

然后,您可以在加载表单(并填充隐藏字段)时显示该 DIV 中的总金额。 如果需要,您甚至可以将 DIV 格式化为看起来像文本框。