Палец вверх 0
Перевод
Перевод

Получить форму onsubmit для возврата true из функции addEventListener

Здесь проблема. У меня есть форма с различными входами и кнопка отправки. Когда пользователь нажимает «submit», он ожидает срабатывания события addEventListener (обычно в течение 3 секунд). Мне нужна форма, чтобы затем правильно отправить форму (желательно без использования AJAX).

$('#form').submit(function(){
    var ele=document.getElementById('audio');
    ele.addEventListener('canplay',function(){
        // After doing some stuff here, how do I get the parent function to
        // return true so that the form can be submitted?
    });
    // I put this here so that the browser is forced to wait for the
    // "addEventListener" event
    return false;
});
jquery forms submit
задан nickjyc 8 дек. 2011 г., 5:28:10
источник

1 ответ

Решение 1
Перевод
Перевод

Сохраните логическую переменную, которая указывает, следует ли отправлять форму. Установите значение true в обработчике canplay :

(function () {
    var shouldSubmit = false;
    $('#form').submit(function(){ 
        var ele=document.getElementById('audio'); 
        ele.addEventListener('canplay',function(){ 
            // do some stuff here
            shouldSubmit = true;
        }); 
        return shouldSubmit; 
    }); 
})();

Это приведет к тому, что после canplay события canplay форма может быть отправлена. Если вы хотите, чтобы форма отправлялась сразу после canplay события form.submit() вместо этого вызовите form.submit() :

$('#form').submit(function(){ 
    var ele=document.getElementById('audio'); 
    var form = this;
    ele.addEventListener('canplay',function(){ 
        // do some stuff here
        form.submit();
    }); 
    return false; 
}); 
ответ дан gilly3 8 дек. 2011 г., 5:31:52
источник