привязка к отправке формы нажмите с помощью jQuery и ждите пока не появятся панели проверки, прежде чем продолжить - PullRequest
1 голос
/ 02 сентября 2011

Я подключаюсь к отправке HTML-форм, где кнопки отправки имеют определенный класс, используя $ (". FormSubmitTypes"). Live ('click', function () {do stuff here});

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

Во второй и все последующие периоды, нажав кнопку «Отправить», div и span становятся видимыми, и процесс регистрации работает - но это почти бесполезно, так как мне нужно, чтобы он обрабатывал первоначальный щелчок и почти «ждал» другие вещи произойдут, прежде чем я продолжу.

Есть ли лучший способ сделать это? Могу ли я выполнить привязку к чему-либо, кроме «click», мне почти нужно событие, например «validationFailed», чтобы выполнить привязку и затем выполнить нужные мне функции.

Идея состоит в том, чтобы захватить сообщения проверки, которые были введены в DOM и отображены, и зарегистрировать их, просто чтобы дать процессу некоторый контекст.

Код, который у меня есть (сокращенно и несколько сокращенно):

$(".formSubmitButton").live('click', function () {
    if ($("#validationMessageContainer").is(":visible")) {
        someProcess.Log('Validation Failed', collectionOfValidationFailedMessages);
    }
});

Мне нужно как-то расширить это, чтобы дождаться прибытия #validationMessageContainer в DOM, а затем связать весь его дочерний HTML и записать в него ошибки проверки.

Большое спасибо -SB

1 Ответ

3 голосов
/ 02 сентября 2011

Имейте в виду, что до тех пор, пока ваша проверка не будет асинхронной, дождаться ее результатов перед регистрацией / отправкой формы - простая задача:

$('#yourformid').submit(function() {
    var validation = doFormValidation(); //Assumes it constructs and returns an object that contains: .isValid (bool) and .errors (array of string error messages)
    if(!validation.isValid)
    {
        displayAndLogValidationErrors(validation.errors);  //In here you can have your logic to test to see if the particular error messages have already been logged.  Perhaps construct an object that will contain the logged messages in an array, and just test to see if that array already contains the error message before logging new ones.
    }
    return validation.isValid; //When valid is false, this will stop the form from submitting.
});

Думаю, вам повезет большепривязка к событию submit в вашей форме, чем нажатие вашей кнопки.Так проще остановить отправку, и он будет обрабатывать сценарии, когда форма отправляется, скажем, нажатием Enter.

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