【发布时间】:2009-05-28 18:08:46
【问题描述】:
我正在通过 javascript 客户端设置文本框的值。当我刷新页面时,值会丢失。
文本框未禁用或设置为只读。
我已经阅读了将值放在隐藏字段中的建议,我不想这样做。这似乎是一个 hack。
文本框位于用户控件中:
<div id="Row" class="RaidRow" runat="server">
<asp:Button ID="RaidRowButton" runat="server" CssClass="RaidRowButton" OnClick="RaidRowButton_Click" />
<asp:TextBox ID="CharacterNameTextBox" runat="server" CssClass="RaidRowControl SlotTextBox" MaxLength="12" />
<asp:Label ID="ClassNameLabel" runat="server" CssClass="RaidRowControl ClassLabel" />
</div>
此控件位于 .aspx 页面上。
当用户双击文本框,在文本框获得焦点时按下回车,或更改文本时,将调用以下 javascript 函数:
function VerifyCharacter(slotNumber, event)
{
var enterWasPressed = false;
if (event && event.which == 13)
{
enterWasPressed = true;
}
else if (window.event && window.event.keyCode == 13)
{
enterWasPressed = true;
}
if (event == null || enterWasPressed)
{
var realmName = 'Lightninghoof';
var characterNameTextBox = GetCharacterNameTextBox(slotNumber);
characterNameTextBox.style.color = '#CCCCCC';
var classLabel = GetClassNameLabel(slotNumber);
classLabel.style.color = '#CCCCCC';
classLabel.innerHTML = 'Unknown';
WoW_Stats.CharacterInformation.GetCharacterInformation(realmName, characterNameTextBox.value, slotNumber, GetCharacterInformation_Success, GetCharacterInformation_Failed);
}
}
网络服务调用完成后,将调用以下 javascript 函数:
function GetCharacterInformation_Success(characterInformationResult)
{
var characterInfo = Sys.Serialization.JavaScriptSerializer.deserialize(characterInformationResult, true);
var classLabel = GetClassNameLabel(characterInfo.SlotNumber);
classLabel.style.color = characterInfo.ClassColor;
classLabel.innerHTML = characterInfo.ClassName;
var characterNameTextBox = GetCharacterNameTextBox(characterInfo.SlotNumber);
characterNameTextBox.style.color = characterInfo.ClassColor;
}
唯一的问题是,当我刷新页面时,通过 javascript 在客户端设置的 CharacterNameTextBox 和 ClassNameLabel 中的文本丢失了。
如何确保控件在回发之间保持其价值?
【问题讨论】:
-
它是
还是 ?你有 runat="server" 属性吗?
标签: asp.net javascript