【发布时间】:2017-10-19 20:37:57
【问题描述】:
我的代码中有一些 asp:Textbox 元素,在用户单击验证后我使用 javascript 禁用了这些元素。
例如:
<asp:TextBox CssClass="dateClass" ID="fromDateE" width="100px" runat="server" Text=""></asp:TextBox>
我的 javascript 函数是:
function disableDateFields()
{
var dates = document.getElementsByClassName("dateClass");
for (var i = 0; i < dates.length; i++)
{
//console.log(dates[i]);
dates[i].disabled = true;
}
}
我遇到的问题是提交后我在文本框中的值被清除了。
为了解决这个问题,我更改了 JS 函数,所以我没有禁用,而是将文本框的 readOnly 属性设置为 true:
function disableDateFields()
{
var dates = document.getElementsByClassName("dateClass");
for (var i = 0; i < dates.length; i++)
{
//console.log(dates[i]);
dates[i].readOnly= true;
}
}
我只是想知道为什么禁用文本框会清除其中的值?这只是默认行为还是我遗漏了什么?
【问题讨论】:
-
如果这是一个 Web 表单应用程序,只需将该元素的
EnableViewState设置为true,提交表单时该值不会消失。 -
单独禁用不会清除值,例如:jsfiddle.net/pfs2hadt
-
@ScottMarcus 它是一个网络表单应用程序。我没有在任何地方设置视图状态.. 不是默认 true 吗?
-
document.getElementById("dateClass").disabled = true; -
我不记得它是否是默认的,因为使用 ViewState 有更多的开销,我认为默认情况下它是不开启的。
标签: javascript c# asp.net