Отмена отправки формы в цикле jQuery .each () - PullRequest
0 голосов
/ 16 февраля 2011

В настоящее время у меня есть большой опрос, состоящий из одной формы, 5 категорий, группы вопросов в каждой категории и нескольких ответов для каждого вопроса.Каждая категория находится в отдельном наборе полей, и для каждой категории требуется разное минимальное количество голосов для обработки формы.

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

$('#pollform').submit(function(event){

    var formsubmit = event;

    $('fieldset').each(function(formsubmit){
        catname     = $(this).children('input[name=catname]').val();    // Category name
        reqvotes    = $(this).children('input[name=catcount]').val();   // Minimum required number of votes for current category in loop
        numvotes    = $(this).children(':checked').size();              // Number of votes for current category in loop 

        // Check minimum number of votes against actual number cast.  Alert user and prevent form from submitting if necessary
        if (reqvotes > numvotes)
        {
            alert('You need to fill out at least '  + reqvotes + ' items for ' + catname  + '.');

            formsubmit.preventDefault();
        }
    });

});

Есть идеи?

Ответы [ 2 ]

1 голос
/ 16 февраля 2011

Вы пытались просто вернуть false? Конечно, вы должны делать это снаружи каждого цикла.

$('#pollform').submit(function(event){

    var stopsubmit = false;

    $('fieldset').each(function(formsubmit){
        if(stopsubmit) return;
        catname     = $(this).children('input[name=catname]').val();    // Category name
        reqvotes    = $(this).children('input[name=catcount]').val();   // Minimum required number of votes for current category in loop
        numvotes    = $(this).children(':checked').size();              // Number of votes for current category in loop 

        // Check minimum number of votes against actual number cast.  Alert user and prevent form from submitting if necessary
        if (reqvotes > numvotes)
        {
            alert('You need to fill out at least '  + reqvotes + ' items for ' + catname  + '.');

            stopsubmit=true;
        }
    });
    if(stopsubmit) return false;
});

Я не тестировал этот код.

0 голосов
/ 16 февраля 2011

Добавить return false; сразу после второй последней });, вам нужно возвращать false только один раз, а не каждый раз при циклическом выполнении этой функции each().

...