2010-03-20 5 views
2

J'ai une forme que je veux soumettre à cliquage qui est en dehors de la forme, voici mon HTML:Jquery soumettre le formulaire erreur

<form id="checkin" name="checkin" id="checkin" action="#" method="post"> 
    <input type="text" tabindex="100" class="identifier" name="identifier" id="identifier"> 
    <input type="submit" tabindex="101" value="Submito" class="elsubmito" name="submit"> 
</form> 

Voici mon jQuery:

$("button").live('click', function() { 
    $("#checkin").submit(); 
}); 

$("#checkin").live('submit', function() { 

}); 

Lorsque Je clique sur le bouton soumettre à l'intérieur du formulaire pour qu'il soit accepté, mais ce n'est pas quand je clique sur le bouton qui est en dehors des balises de formulaire, pourquoi? Comment puis-je réparer cela ?

+2

Pourriez-vous montrer le balisage définissant le bouton en dehors de la forme? –

+0

Il ya une faute de frappe dans la balise de formulaire - était-ce une erreur de copier/coller ou est-ce aussi dans votre HTML? (L'action # "bit) – iblamefish

Répondre

0

Vous sélectionnez tous les éléments <button> mais vous essayez de sélectionner un <input>.

Cela fonctionne quand il est à l'intérieur du formulaire parce que la fonctionnalité de soumission normale s'exécute.

Modifier le sélecteur pour correspondre à l'élément que vous avez fait: input[type=submit]

Mieux encore, oublier la JS et structure simplement votre code HTML mieux pour que ce bouton est dans la forme.

-2

vous pouvez avoir un lien hypertexte simple, en dehors de votre formulaire comme celui-ci
<a href="javascript: $('form checkin').submit()"> click to submit </a>
et c'est tout ce que vous avez besoin

+1

Cela ne traite pas le problème (en supposant que la question était liée à l'utilisation de l'élément bouton HTML5) et est considéré comme une mauvaise pratique (par certains) puisque vous mélangez le balisage avec la logique, quand cela peut facilement être atteint en utilisant des écouteurs d'événements – gpmcadam

0

Si vous manipulez le traitement de formulaire en utilisant JavaScript, alors vous devrez retourner false dans votre code de traitement button et form.

J'ai été en mesure d'obtenir des résultats identiques en utilisant le JavaScript ci-dessous, et les deux exemples HTML (avec le button à l'intérieur et à l'extérieur de l'élément).

JavaScript/JQuery

$("button").live('click', function() { 
     $("#checkin").submit(); 
     return false; 
    }); 

    $("#checkin").live('submit', function(){ 
     alert("Hello world!"); 
     return false; 
    }); 

HTML Exemple 1

Bouton intérieur de la forme.

<form id="checkin" name="checkin" id="checkin" action="" method="post"> 
    <input type="text" tabindex="100" class="identifier" name="identifier" id="identifier"> 
    <input type="submit" tabindex="101" value="Submito" class="elsubmito" name="submit"> 
    <button>test</button> 
</form> 

HTML Exemple 2

Bouton en dehors de la forme.

<form id="checkin" name="checkin" id="checkin" action="" method="post"> 
    <input type="text" tabindex="100" class="identifier" name="identifier" id="identifier"> 
    <input type="submit" tabindex="101" value="Submito" class="elsubmito" name="submit"> 

</form> 

<button>test</button> 

Comme je l'ai dit, les deux exemples réalisés comme prévu. Vous voudrez peut-être vérifier votre code d'écoute button pour vous assurer que vous utilisez l'élément button. Si vous utilisez un élément avec l'attribut id mis à button, alors vous aurez envie de vous assurer que vous utilisez le sélecteur jQuery approprié:

$("#button").live('click', function() { // ... 
+0

@Bauer Je veux une page à recharger ..Je ne veux pas qu'il soit soumis de manière asynchrone, mon script alerte quelque chose quand le formulaire est également posté mais la page ne va pas à l'URL de l'action –

Questions connexes