Взаимодействие с событием TextChanged и кнопки OnClick в текстовом поле ASP.NET?

У меня есть приложение ASP.NET, к которому я обращаюсь через Google Chrome. На конкретной странице у меня есть asp: TextBox с событием OnTextChanged, которое пересчитывает несколько других полей на странице. У меня также есть asp: LinkButton с событием OnClick, которое сохраняет изменения в базе данных.

Я столкнулся с проблемой, когда пользователь покинул TextBox, нажав кнопку сохранения. Кнопка срабатывала до события TextChanged, поэтому изменения не фиксировались при сохранении. Я исправил это, продублировав логику TextChanged в начале метода сохранения. Провел некоторое тестирование, прежде чем я зафиксировал эти изменения, и все работало нормально.

Но теперь мой тестировщик столкнулся с другой проблемой. Когда он изменяет текстовое поле и нажимает кнопку сохранения, событие OnTextChanged запускается для обновления других значений на странице, но событие OnClick для кнопки сохранения вообще не запускается. Он должен нажать кнопку сохранения во второй раз, чтобы событие OnClick сработало. Я протестировал ту же функциональность на своем компьютере, и у меня все еще работает нормально. Мы с ним смотрим на одну и ту же страницу в одной среде с одной и той же базой данных. Мой тестер очистил кэш и т. Д. Единственное отличие, которое я могу найти, это то, что моя версия Chrome - «14.0.835.202 m», а его - просто «14.0.835.202».

Есть ли какие-либо известные проблемы с Chrome и ASP.NET, когда запуск событий может быть недетерминированным или что-то в этом роде? У кого-нибудь есть другие идеи, почему это может происходить? Спасибо за ваше время!


person busoni34    schedule 20.10.2011    source источник


Ответы (1)


Я считаю, что это известная проблема.

Один из вариантов - отключить кнопку (на стороне клиента), когда пользователь вводит текст в TextBox, и включить ее после завершения события TextChanged.

Другой вариант - удалить AutoPostBack="true" и использовать вместо него AJAX.

person James Johnson    schedule 20.10.2011
comment
Мы решили удалить событие изменения текста и вместо этого использовать кнопку «Рассчитать». - person busoni34; 11.11.2011
comment
Отлично ... значит ли это, что вы собираетесь отметить мой ответ;) - person James Johnson; 11.11.2011