2009-03-31 10 views
1

Ich frage mich, ob jemand wusste, wie man auf ein verstecktes Feld (nach Client-ID) in einer Tabellenzeile mit jquery zugreifen kann.Jquery verstecktes Feld in Tabelle

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

finde ich, dass die oben genannten Arbeiten für eine Zeile, die nur einen Eingang hat, aber ich brauche Hilfe einen Weg herauszufinden, den Wert der Eingänge Namen zu erhalten.

Hier ist das Beispiel einer Tabellenzeile. Wie würde ich auf die beiden Felder mit ihren IDs zugreifen?

<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

Sie haben runat = "Server" auf Ihren versteckten Feldern, nicht wahr? Ist das nur ein Tippfehler? (Ohne es werden Sie nicht sehr weit) –

Antwort

2

Mit der Art und Weise Sie es jetzt eingerichtet haben, können Sie dies tun:

$('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 

diese verwenden können, müssen Sie über die Eingabe des ClientID keine Sorge.

2

Man könnte es wie folgt tun:

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

Lesen Sie diesen ausgezeichneten Artikel 'How to get what you want using jQuery "von Benjamin Sterling.

+0

Danke. Ich verwende eine Masterseite und Asp.net ändert den ID-Namen. Gibt es eine Möglichkeit, clientID zu verwenden? Ich habe versucht mit var worker = $ (this) .find ('input [name = <% = hdnfld_Id.ClientID%>]'). Val(); und ich bekomme den folgenden Fehler. Der Name 'hdnfld_Id' existiert im aktuellen Kontext nicht. – zSynopsis

1

<asp:HiddenField id="foo"> erzeugt ein nicht wahr? Warum machst du nicht einfach

$("#foo").val() 

?

Ich denke, Sie müssen erklären, was Sie versuchen, ein bisschen besser zu machen. Wenn Sie feststellen, dass

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

... funktioniert nur, wenn Sie einen Eingang haben, vielleicht, was Sie suchen, ist dies:

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

Aber wie es steht, Ihre Frage ist nicht ganz klar, . Versuchen Sie, Ihre Frage zu bearbeiten und nehmen Sie sich Zeit, um genau zu erklären, was Sie wollen.

+0

Nun, ich suchte nach einer Möglichkeit, auf die Werte in den ausgeblendeten Feldern für das Click-Ereignis in einer Zeile innerhalb der Tabelle zuzugreifen. Jedes versteckte Feld hat eine eindeutige Kennung für die Zeile. Ich hoffe, dass es ein wenig aufräumt. – zSynopsis

2

Warum gehst du nicht einfach verwenden:

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

ich normalerweise eine positive Lookup verwenden, um die ID zu entsprechen, ist diese Methode vermeidet erfordert die Client-ID

(id enthält foo) $ (this) .find ("Eingabe [id * = 'foo']"). val();

1

keine Antwort, aber ich war mit unglaublichen Schwierigkeiten einen versteckten Feld Wert innerhalb einer Tabellenzelle in Zug (mit tablesorter auf der Tabelle natürlich), so bin ich so glücklich, diese Codezeile gefunden zu haben:

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

und es funktioniert wunderbar.

Ich benutze auch die ".Live" -Funktion, so funktioniert es auch auf großen Tischen.

DANKE !!!

HLR

1

Ich habe drei Registerkarten mit jeweils einer Schaltfläche Senden verursacht Post Rücken.Nach dem Klickereignis für die Schaltfläche "Senden" möchte ich, dass die aktuelle Registerkarte beibehalten wird.

Schritt 1.

Added ein asp: Hidden innerhalb der Registerkarten div ('Tabs' div alle drei divs hält, die den Inhalt für meine Tabs).

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

Schritt 2.

den Wert von sel_tab mit dem Click-Ereignis jeder Taste aktualisiert, die zurück einen Beitrag verursacht.

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"; 
} 

Schritt 3. In meiner Js Datei habe ich den folgenden Code

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

Dies funktioniert auch, wenn Sie Master-Seiten verwenden (ich bin). Benötigen Sie nicht den <% = foo.ClientID%> Teil.

+0

danke das hat wirklich geholfen –