2009-03-31 14 views
1

Je me demandais si quelqu'un connaissait un moyen d'accéder à un champ caché (par ID client) dans une ligne de table en utilisant jquery.Champ caché Jquery dans le tableau

$("#tblOne").find("tr").click(function() { 
      var worker = $(this).find(":input").val(); 
     }); 

Je trouve que les travaux ci-dessus pour une ligne qui n'a qu'une seule entrée, mais j'ai besoin d'aide pour trouver un moyen d'obtenir la valeur du nom des entrées.

Voici l'exemple d'une ligne de table. Comment accéder aux deux champs par leurs identifiants?

<table id="tblOne"> 
<tr> 
<td> 
    <asp:HiddenField id="hdnfld_Id" Text='<% Eval("ID") %>'></asp:HiddenField> 
</td> 
<td> 
    <asp:HiddenField id="hdnfld_Id2" Text='<% Eval("ID2") %>'></asp:HiddenField> 
</td> 
</tr> 
</table> 
+1

Vous avez runat = "serveur" sur vos champs cachés n'est-ce pas? Est-ce juste une faute de frappe? (Sans cela, vous n'irez pas très loin) –

Répondre

2

Avec la façon dont vous avez la configuration dès maintenant, vous pouvez le faire:

$('tr td', '#tblOne').eq(0).find(':input').val(); // find input in 1st TD 
$('tr td', '#tblOne').eq(1).find(':input').val(); // find input in 2nd TD 

L'utilisation de ce que vous n'avez pas à vous soucier de l'entrée de ClientID.

2

Vous pouvez le faire comme ceci:

$("#tblOne").find("tr").click(function() { 
     var election = $(this).find("td").eq(0).html(); 
     var worker = $(this).find('input[name=theName]').val(); 
    }); 

Lire par cet excellent article 'How to get what you want using jQuery »par Benjamin Sterling.

+0

Merci. J'utilise une page maître et Asp.net change le nom de l'identifiant. Existe-t-il un moyen d'utiliser clientID? J'ai essayé d'utiliser var worker = $ (this) .find ('input [nom = <% = hdnfld_Id.ClientID%>]') .val(); et j'obtiens l'erreur suivante. Le nom 'hdnfld_Id' n'existe pas dans le contexte actuel. – zSynopsis

1

<asp:HiddenField id="foo"> génère un <input type="hidden" id="foo"/> non? Pourquoi ne faites-vous pas simplement

$("#foo").val() 

?

Je pense que vous devez expliquer ce que vous essayez de faire un peu mieux. Si vous trouvez que

$(this).find(":input").val(); 

... ne fonctionne que si vous avez une entrée, peut-être ce que vous cherchez est le suivant:

$(this).find(":input").each(function() { 
    // Prints the value of each input. 
    alert($(this).val()); 
} 

Mais tel qu'il est, votre question n'est pas très clair . Essayez d'éditer votre question et prenez votre temps pour expliquer exactement ce que vous voulez.

+0

Eh bien, je cherchais un moyen d'accéder aux valeurs dans les champs cachés pour l'événement de clic sur une ligne dans la table. Chaque champ masqué a un identifiant unique pour la ligne. J'espère que cela éclaircira un peu. – zSynopsis

2

Pourquoi utilisez-vous tout simplement pas:

jQuery("#<%=hdnfld_Id.ClientID%>") 
3

J'utilise normalement une recherche positive correspondre à l'ID, cette méthode évite nécessitant l'identifiant client

(id contient foo) $ (this) .find ("input [id * = 'foo']"). val();

1

Pas une réponse, mais j'avais une incroyable difficulté à tirer une valeur de champ caché à l'intérieur d'une cellule de table (en utilisant tablesorter sur cette table bien sûr), je suis donc très heureux d'avoir trouvé cette ligne de code:

$ (this) .find (": entrée"). Val();

et cela fonctionne à merveille.

J'utilise aussi la fonction ".live", donc cela fonctionne même sur les tables énormes.

MERCI !!!

HLR

1

J'ai trois onglets chacun avec un bouton Soumettre faisant le dos de poste.Après l'événement de clic pour le bouton de soumission, je souhaite que l'onglet actuel persiste.

Étape 1.

Ajout d'une asp: HiddenField dans les onglets div (la div 'onglets tient tous les trois divs qui ont le contenu de mes onglets).

<asp:HiddenField ID="sel_tab" Value="" runat="server" /> 

Étape 2.

jour la valeur sel_tab l'événement clic chaque bouton provoque Revenir.

protected void cmdSaveDailyMeasure_Click(object sender, EventArgs e) 
{ 
    sel_tab.Value = "0"; 
} 
protected void cmdSaveWeeklyMeasure_Click(object sender, EventArgs e) 
{ 
    sel_tab.Value = "1"; 
} 
protected void cmdSaveMonthlyMeasure_Click(object sender, EventArgs e) 
{ 
    sel_tab.Value = "2"; 
} 

Étape 3. Dans mon fichier .js J'ai le code suivant

// Tabs 
$(document).ready(function() { 
    var iSelectedTab = $(this).find("input[id*='sel_tab']").val(); 
    if (iSelectedTab == null) 
     iSelectedTab = 0;  
    $('[id$=tabs]').tabs({ selected: iSelectedTab }); 
}); 

Cela fonctionne même si vous utilisez des pages maître (je suis). Vous n'avez pas besoin de la pièce <% = foo.ClientID%>.

+0

merci cela a vraiment aidé –