2010-02-24 6 views
2

Je le formulaire ci-dessousFormulaire refuse de se soumettre via jQuery

<form name="myForm" id="myForm" method="post" enctype="multipart/form-data" action="script.php"> 

et ce jQuery

$(document).ready(function() { 

    $('#previewButton').click(function() { 
    // Change form's target to be in a new window. 
    $('#myForm').attr('target', '_blank'); 

    /* 
    * Create a hidden input field and add it to the form to designate that the 
    * action the form is performing is a preview action. 
    */ 
    $('#myForm').append($('<input id=\"previewAction\" name="previewAction" type=\"hidden\" />')); 

    // Submit the form. 
    $('#myForm').submit(); 

    // Change the form's target to be the current page again. 
    $('#myForm').attr('target', ''); 

    /* 
    * Remove the hidden input field we just added so that the form can submit 
    * normally. 
    */ 
    $('#previewAction').remove(); 

    return false; 
    }); 

}); 

J'ai ce exactement le même code à deux sur deux pages différentes. Sur un, quand je clique sur mon lien Aperçu, le formulaire soumet à une nouvelle fenêtre vide. Sur l'autre page, le formulaire ne pas soumettre, et aucune fenêtre ne s'ouvre lorsque je clique sur Aperçu. .click() est en cours d'exécution, et je sais cela parce que j'ai mis un appel à alert() dans .click() et a été présenté avec une boîte d'alerte.

de courir ce qui suit, je peux voir que ma forme .submit() n'est pas redéfinie nulle part ailleurs:

var submitEvents = $('#myForm').data("events").submit; 
jQuery.each(submitEvents, function(key, value) { 
    alert(value); 
}); 

, je reçois également aucune erreur Javascript.

Et les idées pour lesquelles cliquer sur Aperçu (apparemment) ne fait rien?

+0

Vérifiez la console d'erreur? – Matchu

+0

Oui, pas d'erreur. –

+0

Avez-vous parcouru le code JS en utilisant quelque chose comme FireBug pour voir si quelque chose s'y trouve? –

Répondre

6

Il s'avère qu'il y avait un bouton <input> avec id = 'submit'. jQuery n'a pas aimé ça.

+1

Pour référence, j'ai rencontré ce même problème avec un élément nommé "submit" et un ID différent. – mdryden

0

peut-être tatillon, mais:

$('#myForm').append($('<input id=\"previewAction\" name="previewAction" type=\"hidden\" />')); 

Pourquoi vous échapper " et aussi ne pas échapper" sur la même ligne? Vous n'avez pas réécrit " en ' et vous avez oublié de vous échapper?

aussi, target sur form est quelque chose de nouveau pour moi :)

Edit:

Peut-être html ou tout autre javascript pourrait vous donner/nous quelques indices - sinon je me sens aussi perdu que vous.

+0

Oh, bon point. Étrange, il n'a rien gâché pour l'autre forme. Aucune différence sans les barres obliques. –

Questions connexes