gpt4 book ai didi

javascript - 检测在其他控件 OnChanged 事件期间单击的控件

转载 作者:行者123 更新时间:2023-12-03 02:21:38 24 4
gpt4 key购买 nike

我有一个复杂的业务应用程序,用户希望我验证各个文本框条目。我使用 OnChanged 事件来触发 PostBack 并针对各种其他字段值进行业务规则验证。问题是用户在文本框中键入一个值,然后单击另一个文本框。 OnChanged 事件按预期触发,但我很难获取他们单击的(不同的)控件。我尝试向其他控件中的 OnFocus 事件添加一些 Javascript,并将控件名称/ID 保存在隐藏字段中。我有一个测试警报,表明隐藏字段确实在 OnChanged 回发之前更新,但隐藏字段值在 OnChanged 回发中没有更新的值。如果我执行某些操作来触发第二次回发,则隐藏字段将具有该值。

我要么需要让这个方法起作用,要么可能有另一种解决方案来找到他们从其他控件的 OnChanged 事件中单击的控件。请帮忙。

请不要提供jquery建议;项目不允许jquery。

最佳答案

您可以在每个 TextBox 上添加一个 onFocusIn 监听器。然后将焦点 TextBox 的 ID 添加到 HiddenField 并在 PostBack 上读取该 ID。

<asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox_TextChanged" 
onFocusIn="setFocusedControlValue(this)" AutoPostBack="true"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server" OnTextChanged="TextBox_TextChanged"
onFocusIn="setFocusedControlValue(this)" AutoPostBack="true"></asp:TextBox>

<asp:HiddenField ID="HiddenField1" runat="server" />

<script type="text/javascript">
function setFocusedControlValue(control) {
document.getElementById('<%=HiddenField1.ClientID %>').value = control.id;
}
</script>

隐藏代码

protected void TextBox_TextChanged(object sender, EventArgs e)
{
Label1.Text = HiddenField1.Value;
}

但是,当单击页面上的其他任何位置时,TextChanged 事件也会触发 PostBack,在这种情况下,您将没有下一个 TextBox 的 ID。

关于javascript - 检测在其他控件 OnChanged 事件期间单击的控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49133213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com