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"
,它的工作正常。
答案 0 :(得分:2)
您希望能够保存“txtPtotalamout”的结果,但您不希望它是可编辑的。
你可以使用
<div id="PTotalAmount"><asp:Label id="PTotalAmount" runat="server" /></div>
<asp:HiddenField ID="hPTotalAmount" runat="server" />
要显示它,并在javascript中更新该DIV的内容和隐藏字段。
然后,您可以在加载表单时显示该DIV中的总金额(并填充隐藏字段)。如果需要,您甚至可以将DIV格式化为文本框。
答案 1 :(得分:2)
来自http://codecorner.galanter.net/2009/10/09/postback-disabled-textbox/
假设您在ASP.NET应用程序中将TextBox控件的属性ReadOnly设置为True(或Enabled为False)以防止用户直接输入数据。但是您仍然希望通过客户端JavaScript更新该文本框的值。发生了什么,价值可以更新。但在回发到服务器期间 - 惊喜,惊喜! - 新值不会持续存在。这是出于安全预防措施 - 如果不打算更改值 - 则不允许更改。但是有一种解决方法。
诀窍是 - 保持ReadOnly = False
和Enabled = True
并模拟他们的行为。在服务器端代码中添加以下行:
TextBox1.Attributes["onclick"] = "this.blur();"
其中TextBox1是您的文本框控件。这一行的作用是在文本框中添加客户端行为。一旦用户尝试单击文本框,焦点就会立即丢失,从而阻止用户输入数据,使文本框基本上是只读的。为了进一步起作用,您可以将texbox的背景设置为“LightGray”,使其显示为禁用。