Вызов функции из вложенных функций в jQuery - PullRequest
0 голосов
/ 31 января 2012

Полагаю, это проблема масштаба, но я не могу ее решить! У меня есть функция, которая проверяет форму перед отправкой. При отправке он проходит по каждому полю и проверяет детали. Затем следует установить файл cookie для каждого значения, поскольку форма временно отправляет пользователя с сайта, и мне нужны эти данные при его возврате.

У меня есть функция set cookie, которая прекрасно работает, но вызов этой функции из двух вложенных функций ничего не делает.

$(document).ready(function() {
    $("form#mainRequestBrochure").submit(function(event) {
        event.preventDefault();     //prevent form.submit()
        var missingData = 0;        // missing required fields counter
        $("form#contactForm input").each(function(index) {
            var ok = 0;
            var v = $(this).val();
            var n = $(this).attr('name');   
            if(isBlank(v)===true) {         // if empty
                $(this).addClass("error");  // add error class
                missingData++;              // add one to  counter
            } else if(($(this).attr('type')==="email")&&(!isValidEmailAddress(v))) {
                $(this).addClass("error");  
                missingData++;
            } else if ($(this).hasClass("error")) {     // not empty but has had error class applied
                $(this).removeClass("error");           // clear error class
                ok = 1;
            } else {
                ok = 1; 
            }
            if(ok===1) createCookie(n,v,7);
        });
        createCookie('Testing2','test',7);
        // if no errors recorded, submit the form
        if(missingData === 0 ) $("form#mainRequestBrochure").submit();
    }); 

});

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
    alert('cookie ' + name + ' set.');
}

Код непосредственно внутри $("form#mainRequestBrochure").submit(function(event) работает нормально, создавая cookie с именем Testing2, используя createCookie('Testing2','test',7), но когда я помещаю эту же строку кода в цикл .each(), он ничего не делает.

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

1 Ответ

0 голосов
/ 31 января 2012

Переместите функцию createCookie за пределы функции отправки.

...