2008-10-30 5 views
1

J'ai une page avec plusieurs formulaires. pourrait être 1..200. Aucune de ces formes ont des boutons et ils sont construits par programme. J'utilise jquery pour soumettre tous les formulaires qui sont vérifiés.Comment faire fonctionner la fonction lorsque le formulaire sans bouton est soumis

function FakeName() 
    { 

      $("input:checked").parent("form").submit(); 

    } 

Mes formes ressemblent:

  <form name="FakeForm<%=i%>" action="javascript:void%200" onSubmit="processRow(<%=i%>)" method="post" style="margin:0px;"> 
       <input type="checkbox" name="FakeNameCheck" value="FakeNameCheck"/> 
       <input type="hidden" name="FakeNum" value="<%= FakeNum%>"/> 
       <input type="hidden" name="FakeId" value="<%=FakeIdr%>"/> 
       <input type="hidden" name="FakeAmt" value="<%=FakeAmount%>"/> 
       <input type="hidden" name="FakeTrans" value="FakeTrans"/> 
      </form> 

Note: l'action est réglé sur "javascript: void% 200" pour qu'il publie une fausse page. Je veux gérer ma propre publication dans processRow. OnSubmit ne reçoit jamais d'appel et, par conséquent, ProcessRow n'est jamais appelé.

De toute évidence ont été changés tous les noms des fonctions et des variables pour protéger leur identité: D

Comment puis-je obtenir une fonction dans chaque forme de feu quand je l'appelle soumettre un programme.

Répondre

2

Le gestionnaire onsubmit est délibérément pas déclenché lorsque vous envoyez le formulaire par programme. Ceci permet d'éviter une récursion infinie si un gestionnaire d'événement provoque le déclenchement de l'événement (et donc le rappel du gestionnaire d'événements)

Cependant, vous pouvez bien sûr appeler la fonction processRow() à la place de l'appel .submit() .

Vous avez le droit d'avoir des entrées en dehors des formulaires. Une école de pensée est qu'un <form> ne devrait pas être un <form> s'il n'est pas destiné à être soumis au serveur via HTML.

+0

ouais. Je pensais qu'il serait plus facile de regrouper tous mes champs nécessaires dans une forme afin que je puisse parcourir toutes les formes. Suggérerais d'utiliser un div pour cela? J'aurai beaucoup de FakeForms sur la page. –

+0

Pour être honnête, une meilleure solution serait de laisser les formulaires tels quels mais d'utiliser une action = "..." qui peut traiter le résultat si le formulaire est soumis (par un utilisateur sans javascript, par exemple). Cependant la dégradation non-javascript gracieuse est un jeu de balle entier autre que votre question est basée sur – Gareth

0

Rechercher dispatchEvent et son équivalent fireEvent. Ce n'est pas la chose la plus simple au monde à utiliser, mais je pense que c'est ce que vous cherchez.

Je suis surpris qu'il n'y ait pas de bibliothèque qui facilite cela. Le prototype (celui que j'ai le plus utilisé) est le plus proche avec une méthode .fire() sur les éléments.

0

On dirait que je peux être en mesure de le faire:

<form name="FakeForm<%=i%>" action="javascript:processRow(<%=i%>)" method="post" style="margin:0px;"> 
           <input type="checkbox" name="FakeNameCheck" value="FakeNameCheck"/> 
           <input type="hidden" name="FakeNum" value="<%= FakeNum%>"/> 
           <input type="hidden" name="FakeId" value="<%=FakeIdr%>"/> 
           <input type="hidden" name="FakeAmt" value="<%=FakeAmount%>"/> 
           <input type="hidden" name="FakeTrans" value="FakeTrans"/> 
         </form> 

Y a-t-il des inconvénients à cela?

Questions connexes