2016-09-17 2 views
3

У меня есть текстовое поле с прикрепленным к нему событием с изменениями текста;Ограничить несколько событий в ASP .net & Javascript

<asp:TextBox ID="txtLoadPortCode" MaxLength="8" runat="server" ToolTip="Load  Port Code" CssClass="form-control form-control-Mandatory" OnTextChanged="txtLoadPortCode_TextChanged" AutoPostBack="true"></asp:TextBox> 

Об изменении текста он запускает на стороне сервера событие для извлечения имя из базы данных, если имя отсутствует он показывает предупреждение Javascript срабатывает со стороны сервера.

ScriptManager.RegisterStartupScript(this, GetType(), "OriginPortMissing", "$(function(){alert(\"This combination '" + this.txtLoadPortCode.Text + "' of Country, City & Site is not available in Master table. Please provide a valid Code.\");});", true); 

У меня также есть кнопка отправки с прикрепленной к ней проверкой поля Javascript;

<asp:LinkButton ID="btnSubmitCreateRequest" runat="server" CssClass="btn btn-primary btn-custom btn-Custom-Link" OnClick="btnSubmitCreateRequest_Click" OnClientClick="return ValidateFields();"> 
    <i class="fa fa-paper-plane" aria-hidden="true"></i> 
    <span>Submit Booking</span> 
</asp:LinkButton> 

На ValidateFields функции() я написал проверку поля для нескольких элементов управления и если проверка не пройдена он показывает сообщение об ошибке в «боевой готовности» окно.

Таким образом, сценарий заключается в том, что если пользователь дает определенное значение в текстовом поле и нажимает непосредственно на кнопку «Отправить», то оба события изменения текста и подтверждения подтверждения кнопки «Отправить» запускаются, в результате получается двойное сообщение предупреждения одновременно (браузер IE 11).

Можно ли каким-либо образом ограничить событие проверки кнопки отправки?

ответ

2

Initally Не показывать LinkButton, установите его в visible="false" после текста изменения (я имею в виду в Textchanged события) попробовать установить LinkButtonvisible="true"

+0

Nice One. То, что я сделал, вместо того, чтобы скрывать это, я сделал его «Отключено», а затем после изменения текста «Включено». –

0

В JQuery есть положение. используя event.stopImmediatePropagation(). https://api.jquery.com/event.stopimmediatepropagation/][1] Пожалуйста, проверьте это один раз. Это может вам помочь.

+0

Хорошее предложение, но в моем случае оба события разные, если бы одно и то же событие повторялось более одного раза, я мог бы использовать event.stopImmediatePropagation(), чтобы ограничить последующие события. –

1

Для этого предела просто времени или просто отложить проверку с помощью setTimeOut

setTimeOut(function(){ put your validation code },10000) 
+0

setTimeOut только задерживает оповещения, это не будет препятствовать этому. И в уведомлении о подтверждении отправки есть длинный список, поэтому установка задержки для уведомления о изменении текста не будет настолько удобной для пользователя. –

+0

u получил два события в настоящее время, так что этот тайм-аут поможет и сохранится время от 10 секунд до 20 секунд, я попробовал, и это сработало для меня –

Смежные вопросы