2010-01-16 3 views
0

J'essaie de changer le src d'un iframe lors de la soumission d'un formulaire.jQuery - ne déclenche que le second clic lors du changement de iframe src

Le src iframe ne changera pas à moins que je n'appuie sur le bouton d'envoi deux fois. Cependant, si je change juste l'entrée 'type' pour mon bouton de soumission en 'texte', cela fonctionne au premier clic - mais évidemment ne soumet pas le formulaire.

<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> 

Répondre

0

Vous pouvez modifier le type de button et faire ...

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

Nick - sonne comme une bonne idée, mais la forme ne présente pas du tout avec ce code . Je cherche à soumettre le formulaire normalement, avec une actualisation de la page. Merci pour la réponse rapide et laissez-moi savoir si vous avez d'autres idées. – johnboy

+0

Si le formulaire soumet et fait une mise à jour complète de la page ... tout ce que vous faites dans jQuery à l'iframe sera perdu de toute façon, peut-être que je ne comprends pas ce que vous recherchez? –

+0

Voici ce que je travaille sur: http://www.johnboy.com/php-upload-progress-bar/ Le seul problème est que lorsque la page se charge - jQuery commence automatiquement à faire des appels à une URL à obtenir l'état du fichier/progression. Je voudrais que l'iframe soit appelée seulement quand le formulaire est soumis - ainsi il commence à faire les appels pour mettre à jour la progression, seulement quand le formulaire est réellement soumis. Formulaire http://www.johnboy.com/php-upload-progress-bar/upload.phps iframe http://www.johnboy.com/php-upload-progress-bar/upload_frame.phps – johnboy

0

Pourquoi ne pas utiliser l'attribut cible de la forme?

<form ... target="upload_frame"> 

devrait le faire ..

Et vous auriez pas besoin de recourir à jQuery pour la fonctionnalité standard et prise en charge du navigateur ..

1

J'ai compris la question que je faisais. Le résoudre avec la fonction 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); 
      } 
     }); 
    // 

Le projet dans lequel j'utilise ce formulaire se trouve ici:

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

Questions connexes