2013-01-02 4 views
3

J'ai une page avec un nombre variable de tables qui sont générées dynamiquement. Chaque table liste un groupe de "produits" que l'utilisateur peut ajouter/modifier/supprimer. Sous chaque table se trouve un bouton. Je veux que chaque bouton enregistre les produits dans le tableau au-dessus d'un "paquet", qui est juste un groupe de produits. Quand on clique sur le bouton, je veux qu'il lance un formulaire de dialogue jQuery dans lequel un utilisateur peut entrer un nom et une description pour le paquet qu'il crée.Gain référence au bouton qui a lancé jQuery Dialog

Y a-t-il un moyen pour moi d'obtenir une référence au bouton qui a lancé la boîte de dialogue jQuery en premier lieu dans le cadre des fonctions "boutons" du dialogue? De cette façon, lorsque l'utilisateur clique sur le bouton "enregistrer" dans la boîte de dialogue, je peux soumettre à la fois le formulaire contenu dans la boîte de dialogue (nom et description) et soumettre les données du produit contenues dans la table la plus proche balisage sur le bouton particulier que l'utilisateur a cliqué pour lancer le formulaire?

Editer: J'ai oublié de mentionner que la page WHOLE (toutes les tables) est déjà contenue dans un seul élément de formulaire. En effet, un utilisateur peut également enregistrer tous les produits dans les trois tables comme une opportunité, qui est un groupe de groupes de produits. Voici un petit pseudo html pour montrer la mise en page:

<form> 
    <table> 
    </table> 
    <table> 
    </table> 
    <table> 
    </table> 
</form> 

Aux fins de permettre à l'utilisateur d'enregistrer tous les produits dans toutes les tables à une « opportunité », je dois laisser les trois tables enveloppées sous une forme marque. Toutefois, lorsqu'un utilisateur clique sur le bouton "Enregistrer le package" sous une table particulière, je souhaite uniquement soumettre les données dans ce tableau et le nom et la description saisis par l'utilisateur dans la boîte de dialogue.

Répondre

0

définir une variable globale dans js et définissez sa valeur si l'un clic de bouton.
dans cet exemple "id" est utilisé.

$('.button').click(function(){ 
    id = $(this).index(); 
    $('#dialog').fadeIn('1000'); 
    return false; 
}); 

peut-être cela peut être utile:
http://jsfiddle.net/Vm7PL/1/

vous pouvez également utiliser la boîte de dialogue jquery-ui.

0

pas sûr de ce type de bouton que vous utilisez, mais voici avec l'entrée standard html bouton Soumettre

$(document).ready(function() { 
    $("input[type='submit']").click(function() { 
     var btn = $(this); 

     //get the TR the button is in 
     var tr = btn.parent().parent(); // first parent will be the TD, second will be TR, third would be the TABLE 

     // find other elements in the TR 
     tr.find('#someElement').each(function(){ 
      //do something with the elements 
     }); 
    }); 
}); 
+0

Merci, mais cela ne règle pas le problème que j'ai. Deux boutons sont impliqués dans mon problème, un qui a un événement click qui lance une boîte de dialogue jQuery avec un formulaire à l'intérieur, et un _within_ le dialogue jQuery qui devrait soumettre le formulaire contenu dans la boîte de dialogue, ainsi que les données du la table la plus proche du balisage du bouton _first_. Je sais comment référencer la table la plus proche du premier bouton dans l'événement click pour le premier bouton, comme vous le faites ci-dessus. Ce que je ne sais pas comment faire est de faire référence au premier bouton dans la fonction du bouton de la boîte de dialogue jQuery. – itsmequinn

+0

Je suppose que je ne comprends pas ce qui est sur le premier bouton dont vous avez besoin. Si vous pouvez obtenir toutes les données des deux formulaires, quel est le premier bouton qui vous donne? – mmeasor