Проверка JQuery и получение значений в одном вызове - PullRequest
1 голос
/ 31 октября 2011

В нашем веб-приложении мы хотим обработать значение определенного текстового поля с помощью вызова ajax, как только будет нажата определенная кнопка:

$("#the-button").click(function() {
    if ($("#the-form").validate().element($("the-button"))) {
        var oldValue = $("#the-button").value(),
            newValue = process(oldValue);
    }
});

Метод process() скрывает ajax-вызов synchronous для извлечения некоторого значения на основе текста в текстовом поле.

Перед выполнением process () мы проверяем поле с помощью специального адаптера, который использует тот же вызов ajax, просто чтобы узнать, способен ли сервер обработать значение. (Это по причине.)

Теперь мы хотели бы оптимизировать это: в основном запись действительна тогда и только тогда, когда она может быть обработана :

$.validator.addMethod("canBeProcessed", function(value, element) {
    var result;

    $.ajax({
        ...,
        async: false,
        success: function (data) {
            result = true;
            // the actual result is ignored
        }
        error: function () {
            result = false;
        }
    }

    return result;
}, "Value cannot be processed");

Так что было бы неплохо, если бы мы могли проверить и обработать значение за один раз:

$.validator.addMethod("canBeProcessed", function(value, element) {
    var result;

    $.ajax({
        ...,
        async: false,
        success: function (data) {
            result = true;
            saveForLaterUse(data); // <-- save the result
        }
        error: function () {
            result = false;
        }
    }

    return result;
}, "Value cannot be processed");

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

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