Привет, я столкнулся со странной проблемой, которая случается только в FF. У меня есть элемент управления TextBox с обработчиком OnTextChanged. Обработчик событий работает нормально большую часть времени, но когда пользователь изменил текст и нажал Enter в FF, событие OnTextChanged вызывается дважды. Я обнаружил проблему в Firebug, что первый запрос фактически отменен из-за второго события.
Test.aspx
<%@ Page Language="C#" AutoEventWireup="True" CodeFile="~/Test.aspx.cs" Inherits="T.Test" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Custom TextBox - OnTextChanged - C# Example</title>
</head>
<body>
<form id="Form1" method="post" runat="server">
<asp:ScriptManager runat="server" ID="SM">
</asp:ScriptManager>
<h3>Custom TextBox - OnTextChanged - C# Example</h3>
<asp:UpdatePanel runat="server" ID="Panel1">
<ContentTemplate>
<asp:Panel runat="server" ID="Panel2">
<asp:TextBox ID="TextBox1" AutoPostBack="true" OnTextChanged="OnTextChanged" runat="server">Hello World!
</asp:TextBox>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
Test.aspx.cs
using System;
using System.Web.UI;
namespace T
{
public partial class Test : Page
{
protected void OnTextChanged(object sender, EventArgs e)
{
var a = 0;
}
}
}
Установите точку останова @ var a, и вы увидите, что после изменения текста и нажатия клавиши ввода в FF (v3.5.7) событие OnTextChanged вызывается дважды.
Так что мой вопрос в том, каков наилучший способ правильно обработать событие OnTextChanged, чтобы нажатие клавиши enter в текстовом поле не вызывало двойной обратной передачи.
С уважением,