SDev.Pro - разработка на заказ

http://sdev.pro - это:

1) Разработка программного обеспечения

Мы используем платформы ASP.NET MVC, LAMP, Atmel, Android, iOS, DirectShow и базы данных MS SQL, Oracle, PostgreSQL, а также облака на MS Azure и Amazon AWS для реализации любых Ваших идей.

2)Внедрение программного обеспечения

Мы предлагаем настройку и доработку решений на базе систем электронного документооборота MS SharePoint Server, геоинформационных систем на GeoServer, систем отчетности на MS SQL Reporting Services, а также облачных решений на MS Office 365.

http://sdev.pro

Oct 2, 2007

Вызов скрипта после успешной проверки валидаторами

Возникает порой необходимость вызвать свой JavaScript по нажатию на кнопку страницы. Например, создаем проект ASP.NET Web Site в Visual Studio 2005, кладем на форму TextBox, Button и RequiredFieldValidator. У RequiredFieldValidator выставляем TextBox в свойстве ControlToValidate и «*» для Text.


Затем у Button прописываем OnClientClick как 'alert("Событие")'. После этого запускаем сайт. Нажимаем Button и получаем ожидаемый диалог «Событие», а после него срабатывание валидатора.
Иногда нужно вызвать свой скрипт уже после проверки валидаторами страницы. Для этого делаем следующее:

  1. Очищаем OnClientClick.
  2. Заводим переменную var oldClick = null; в JavaScript. Данная переменная будет хранить старый указатель на обработчик onClick кнопки Button1.
  3. Создаем функцию для валидации, вызова нашего кода и вызова старого обработчика:

    function goNext()
    {
    if (typeof(Page_ClientValidate) == 'function')
    if(Page_ClientValidate())
    {
    alert("‘Сообщение");
    if (oldClick)
    oldClick();
    }
    }
  4. Делаем функцию для «перехвата» старого обработчика:

    function formRealPostBack(buttonID)
    {
    var requestButton;
    requestButton = document.getElementById(buttonID);
    if (requestButton.onClick)
    {
    oldClick = requestButton.onClick;
    }
    else
    {
    if (requestButton.onclick)
    oldClick = requestButton.onclick;
    }
    requestButton.onClick = goNext;
    requestButton.onclick = goNext;
    }
  5. Вызываем «перехватчик»:
    <asp:Button ID="Button1" runat="server" Text="Button" /><script language="javascript" type="text/javascript"> formRealPostBack("<%= Button1.ClientID %>") </script>



В результате сначала будет произведена проверка TextBox, а затем выполнится наш код.




3 comments:

  1. Спасибо! очень помогло!

    ReplyDelete
  2. Спасибо! Помогло! Только на мой взгляд так лучше будет:

    function SendMessageLaterValidation()
    {
    var isValid = true;

    if (typeof(Page_ClientValidate) == 'function')
    isValid = Page_ClientValidate();

    if (isValid)
    {
    //То что должно происходит если валидация прошла.
    }
    }

    Нажать

    ReplyDelete
    Replies
    1. Спасибо! Помогло! Только на мой взгляд так лучше будет:

      function SendMessageLaterValidation()
      {
      var isValid = true;

      if (typeof(Page_ClientValidate) == 'function')
      isValid = Page_ClientValidate();

      if (isValid)
      {
      //То что должно происходит если валидация прошла.
      }
      }

      asp:LinkButton ID="Button1" runat="server" OnClientClick="SendMessageLaterValidation()">Нажать</asp:LinkButton

      Delete