2010-02-14 4 views
0

J'ai hérité d'un projet, qui fournit un formulaire de commande à un client.Impossible de sélectionner le formulaire avec jquery

Le formulaire de commande est un tableau, et l'ajout au panier est (destiné à être!) Géré avec jQuery.

code je dois travailler avec ressemble à quelque chose comme ceci:

<table> 
    <form id="prod1" method="post" action=""> 
     <tr> 
      <td>Prod Name</td><td><input type="text" name="prod1qty" id="prod1qty" /></td><td><input type="button" id="prod1add" /></td> 
     <tr> 
    </form> 
    <form id="prod2" method="post" action=""> 
     <tr> 
      <td>Prod Name</td><td><input type="text" name="prod2qty" id="prod2qty" /></td><td><input type="button" id="prod2add" /></td> 
     <tr> 
    </form> 
    <form id="prod3" method="post" action=""> 
     <tr> 
      <td>Prod Name</td><td><input type="text" name="prod3qty" id="prod3qty" /></td><td><input type="button" id="prod3add" /></td> 
     <tr> 
    </form> 
</table> 

Je suis en train de tout sélectionner le type d'entrée = « button » éléments dans les formulaires avec départ de id « la prod » avec jQuery je peux donner les fonction de clic ...

$("form[id^='prod'] :input[type='button']").click(function(){ 
    console.log(this); 
}); 

Mais son échec ... J'ai essayé de voir si elle a atteint l'élément en remplaçant .cliquez() avec Css (« frontière », « rouge 1px solid ») mais il ne le ramassait pas.

Je remarquai alors dans Firebug que le <form> a été grisés et fermé sur la même ligne, à savoir:

<form id="prod1" method="post" action="" /> 
<tr> 
    <td>Prod Name</td><td><input type="text" name="prod1qty" id="prod1qty" /></td><td><input type="button" id="prod1add" /></td> 
<tr> 
<form id="prod2" method="post" action="" /> 
<tr> 
    <td>Prod Name</td><td><input type="text" name="prod2qty" id="prod2qty" /></td><td><input type="button" id="prod2add" /></td> 
<tr> 

Il semble que le code est valide HTML (le mettre dans le validateur), donc Pourquoi cela arrive-t-il?

Merci! Josh

+1

Vous avez tord. Ce n'est pas un HTML valide. Les éléments de formulaire ne peuvent pas être des éléments enfants pour les tables ou les éléments parents des lignes de table. – Quentin

+0

Ah, d'accord. Il suffit de se débarrasser des formes, a donné à 'tr' l'id que la' forme' avait l'habitude d'avoir, changé 'form' en' tr' dans le sélecteur et son fonctionnement. Merci! Je suppose que le validateur ne vérifie que la syntaxe valide et non la validité de la structure. – Josh

Répondre

0

Je pensais que je ferais mieux de fermer cette question correctement ...

Le commentaire par David Dorward a répondu à ma question.

Merci pour les suggestions!

0

Si j'ai compris votre question. Peut-être que si vous utilisez 'class=prod' et vérifiez $('.prod').click(function(){}); pourrait vous donner l'accès aux éléments à l'intérieur de votre formulaire cliqué.

Questions connexes