jQuery - срабатывает только при втором щелчке при изменении iframe src

Я пытаюсь изменить src iframe при отправке формы.

iframe src не изменится, если я дважды не нажму кнопку отправки. Однако, если я просто изменю «тип» ввода для моей кнопки отправки на «текст», он сработает при первом нажатии, но, очевидно, не отправит форму.

<script>

$(document).ready(function() { 
    $("#form1").submit(function() {
            $('#upload_frame').attr('src','upload-test.php');
    });
});

</script>

<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <input id="file" type="file" name="file" />
  <input name="Submit" id="submit" type="submit" value="Submit" />
<br />
  <iframe id="upload_frame" name="upload_frame"> </iframe>
</form>

person johnboy    schedule 16.01.2010    source источник


Ответы (3)


Я понял проблему, которая у меня была. Решил это с помощью функции setTimeout.

    //show iframe on form submit
        $("#form1").submit(function(){

            if (show_bar === 1) { 
                $('#upload_frame').show();
                function set () {
$('#upload_frame').attr('src','upload_frame.php?up_id=<?php echo $up_id; ?>');
                }
                setTimeout(set);
            }
        });
    //

Проект, в котором я использую эту форму, можно найти здесь:

http://www.johnboy.com/php-upload-progress-bar

person johnboy    schedule 17.01.2010

Вы можете изменить тип на button и сделать это...

$(document).ready(function() { 
    $("#submit").click(function() {
        $('#upload_frame').attr('src','upload-test.php');
        $("#form1").submit();
    });
});
person Nick Craver    schedule 16.01.2010
comment
Ник - звучит как хорошая идея, но форма вообще не отправляется с этим кодом. Я хочу отправить форму в обычном режиме с обновлением страницы. Спасибо за быстрый ответ и дайте мне знать, если у вас есть еще идеи. - person johnboy; 17.01.2010
comment
Если форма отправляется и полностью обновляет страницу... все, что вы делаете в jQuery для iframe, все равно будет потеряно, может быть, я неправильно понимаю, что вам нужно? - person Nick Craver; 17.01.2010
comment
Вот над чем я сейчас работаю: johnboy.com/php-upload-progress-bar Единственная проблема заключается в том, что когда страница загружается, jQuery автоматически начинает выполнять вызовы URL-адреса, чтобы получить статус файла/прогресс. Я бы хотел, чтобы iframe вызывался только при отправке формы, поэтому он начинает делать вызовы для обновления прогресса только тогда, когда форма фактически отправлена. Форма johnboy.com/php-upload-progress-bar/upload.phps iframe johnboy.com/php-upload-progress-bar /upload_frame.phps - person johnboy; 17.01.2010

Почему бы вам не использовать целевой атрибут формы?

<form ... target="upload_frame">

должен это сделать..

И вам не нужно было бы прибегать к jQuery для стандартной и поддерживаемой функциональности браузера.

person Gabriele Petrioli    schedule 16.01.2010