Chrome 错误 asp.net updatepanel 发帖两次
Chrome bug asp.net updatepanel posts twice
这是我的标记:
<asp:UpdatePanel ID="updPnl" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox runat="server" ID="txtEmail" AutoPostBack="true" OnTextChanged="txtEmail_TextChanged" />
<asp:Panel runat="server" Visible="false" ID="pnl">
<asp:TextBox runat="server" ID="txtUname" AutoPostBack="true" OnTextChanged="txtUname_TextChanged" />
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
这是背后的代码:
这些是后面代码中的事件处理程序:
protected void txtEmail_TextChanged(object sender, EventArgs e)
{
pnl.Visible = true;
updPnl.Update();
txtUname.Focus();
}
protected void txtUname_TextChanged(object sender, EventArgs e)
{
}
如果我在 txtEmail
文本框上按回车键,它在所有浏览器中都可以正常工作,并且焦点会转到 txtUName
文本框,但 Chrome 除外。在调试时我发现这是因为 Chrome 使 Ajax 请求两次。有没有办法修复这个 Chrome 错误?
请注意,如果我使用 Tab 而不是输入,它在 Chrome 中也能正常工作。但是,我也需要修复这个 Chrome Enter 的错误。
您可以在表格中输入 post 键触发,
您应该阻止在输入时提交操作(因此输入键和 Tab 键会有相同的行为)
例如,您可以使用 JavaScript (onkeydown) 来完成。
但是,我认为这里的更新面板有点矫枉过正,
为什么不在客户端只使用 JavaScript?
$("#txtEmail").change(function() {
var email = $(this).val();
// now you can do whatever you want with the value.
});
这是我的标记:
<asp:UpdatePanel ID="updPnl" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox runat="server" ID="txtEmail" AutoPostBack="true" OnTextChanged="txtEmail_TextChanged" />
<asp:Panel runat="server" Visible="false" ID="pnl">
<asp:TextBox runat="server" ID="txtUname" AutoPostBack="true" OnTextChanged="txtUname_TextChanged" />
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
这是背后的代码:
这些是后面代码中的事件处理程序:
protected void txtEmail_TextChanged(object sender, EventArgs e)
{
pnl.Visible = true;
updPnl.Update();
txtUname.Focus();
}
protected void txtUname_TextChanged(object sender, EventArgs e)
{
}
如果我在 txtEmail
文本框上按回车键,它在所有浏览器中都可以正常工作,并且焦点会转到 txtUName
文本框,但 Chrome 除外。在调试时我发现这是因为 Chrome 使 Ajax 请求两次。有没有办法修复这个 Chrome 错误?
请注意,如果我使用 Tab 而不是输入,它在 Chrome 中也能正常工作。但是,我也需要修复这个 Chrome Enter 的错误。
您可以在表格中输入 post 键触发, 您应该阻止在输入时提交操作(因此输入键和 Tab 键会有相同的行为)
例如,您可以使用 JavaScript (onkeydown) 来完成。
但是,我认为这里的更新面板有点矫枉过正, 为什么不在客户端只使用 JavaScript?
$("#txtEmail").change(function() {
var email = $(this).val();
// now you can do whatever you want with the value.
});