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"
它工作正常。
最佳答案
来自 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 是您的文本框控件。此行所做的是将客户端行为添加到文本框。一旦用户尝试单击文本框,焦点就会立即丢失,从而阻止用户输入数据,从而使文本框基本上处于只读状态。为了进一步的效果,您可以将文本框的背景设置为“LightGray”之类的东西,使其显示为禁用。
关于c# - TextBox 值未分配给 asp.net 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18789861/