Не удается отправить форму с простой проверкой с помощью плагина формы JQuery - PullRequest
0 голосов
/ 13 февраля 2009

Я использую плагин jQuery Form для отправки запросов AJAX. Я пытаюсь сделать несколько простых проверок (убедитесь, что поля заполнены) перед отправкой. Я не пытаюсь выполнить какую-либо проверку AJAX перед отправкой. Прежде чем я добавлю beforeSubmit к параметрам метода ajaxform (), форма отправит и мой код контроллера будет работать нормально. После того, как я добавил параметр beforeSubmit с именем функции проверки, форма не будет отправлять, возвращаю ли я false, true или ничего из метода validate. Вот мой исходный код, который устанавливает форму:

$(document).ready(function() {
var options = {
    beforeSubmit: function(data, form, options) { return validate(data, form, options); },
    url: '/PromoManagement/Images/AddImages?partial=true',
    success: updateImageList
};

    $('#frmAddImages').ajaxForm(options);
});

и вот моя функция проверки:

function validate(data, form, options) {
    var returnMessage = new Array();

    $('#txtImagePath,#txtImageCaption').removeClass('validationError-input');
    clearValidation();

    if ($('#txtImagePath').val().length == 0) {
        returnMessage.push('<li>Image Path is required</li>');
        $('#txtImagePath').addClass('validationError-input');
    }
    else { 
        if (!parseFileExtension($('#txtImagePath').val())) {
            returnMessage.push('<li>Please provide an image with an extension of .jpg, .gif, or .png</li>');
            $('#txtImagePath').addClass('validationError-input');    
        }    
    }

    if (returnMessage.length > 0) {
        $('.errorList').show();
    }

    if (returnMessage.length != 0) {
        buildValidationList(returnMessage);
        return false;
    }
    else {
        return true;
    }

}

Я пытался ничего не возвращать, если не было ошибок, но я получаю те же результаты. Я могу взломать код проверки и посмотреть, что возвращается из функции, и это всегда, как и ожидалось. Я что-то здесь упускаю?

1 Ответ

2 голосов
/ 13 февраля 2009

Я думаю, что beforeSubmit не передает форму в функцию проверки. Попробуйте добавить валидацию в анонимную функцию и указать правильный параметр формы.

EDIT Похоже, что функция beforeSubmit принимает три аргумента ( API ), вторым из которых является форма. Я обновил мой пример, чтобы отразить это. После просмотра вашего кода выясняется, что вы все равно его не используете - поэтому он также был обновлен. Я не уверен точно, что происходит, поскольку кажется, что это должно работать. Подтвердили ли вы, что вы не получили никаких ошибок JavaScript в вашей функции проверки?

beforeSubmit: function(data,form,options) {
    return validate();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...