1

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());

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

4

2 回答 2

2

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

你可以使用

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

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

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

于 2013-09-13T15:48:34.157 回答
2

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

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

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

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

其中 TextBox1 是您的文本框控件。此行的作用是将客户端行为添加到文本框。一旦用户尝试单击文本框,焦点立即丢失,阻止用户输入数据,使文本框本质上是只读的。为了进一步的效果,您可以将 texbox 的背景设置为“LightGray”之类的东西,使其显示为禁用。

于 2013-09-13T15:53:04.170 回答