Вызывать события на стороне клиента из пользовательского метода - PullRequest
0 голосов
/ 01 сентября 2011

У меня есть проект, над которым я сейчас работаю, который имеет несколько валидаторов и событий при создании обратной передачи (классические элементы управления валидатора asp).

У меня есть метод клиента, вызываемый при нажатии кнопки отправки. Он делает вызовы ajax различным службам, и как только все сделано, выполняется обратная передача (пока через классический document.forms[0].submit()).

Проблема в том, что мой метод javascript запускается перед каждым другим вызовом javascript в очереди событий. Вторая проблема заключается в том, что мой метод возвращает значение false, чтобы заблокировать PostBack (я выполняю асинхронные вызовы, поэтому мне нужно убедиться, что PostBack выполняется только тогда, когда я уверен, что каждая обработка завершена).

Я хотел бы либо вызвать этот метод в конце очереди проверки, либо вручную вызвать каждую проверку внутри самого метода, а затем выполнить вызовы ajax.

Вот POC, чтобы объяснить проблему (простая простая страница):

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <script type="text/javascript">
        Validate = function () {
            setTimeout(function () { document.forms[0].submit() }, 2000);

            return false;
        }
    </script>


    <asp:TextBox runat="server" ID="txtSomething"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" onclientclick="return Validate();" Text="Button" />
    <asp:RequiredFieldValidator runat="server" ID="valRequiredTruc" ControlToValidate="txtSomething">something is required</asp:RequiredFieldValidator> 
</asp:Content>

Здесь функция Validate блокирует обратную передачу, чтобы что-то сделать. Через 2 секунды создается Postback, и RequiredFieldValidator проверяет содержимое, но на стороне сервера. Я хотел бы, чтобы это подтвердило клиентскую сторону.

1 Ответ

1 голос
/ 01 сентября 2011

Может быть, функция JavaScript Page_ClientValidate () может помочь вам. Используя этот метод, вы можете запустить проверку страницы.

http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2011/02/28/executing-server-validators-first-before-onclientclick-javascript-confirm-alert.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...