Domanda

Mi chiedevo se qualcuno sapesse di un modo per accedere a un campo nascosto (per cliente ID) all'interno di una riga della tabella utilizzando jQuery.

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

Trovo che le opere di cui sopra per una riga che ha un solo ingresso, ma ho bisogno di aiuto per capire un modo per ottenere il valore con il nome ingressi.

Ecco l'esempio di una riga di tabella. Come potrei accedere ai due campi dai loro id?

<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>
È stato utile?

Soluzione

Con il modo in cui l'hai messa a punto in questo momento, si potrebbe fare questo:

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

Con questo non si deve preoccupare di ClientID dell'ingresso.

Altri suggerimenti

Io di solito uso una ricerca positiva per abbinare l'id, questo metodo evita che richiede l'ID client

(id contiene foo) . $ (This) .find ( "ingresso [id * = 'foo']") val ();

Si potrebbe fare in questo modo:

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

Leggere questo eccellente articolo 'Come ottenere quello che vuoi utilizzando jQuery ' da Benjamin Sterling.

Perché non è sufficiente utilizzare questo:

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

<asp:HiddenField id="foo"> genera un <input type="hidden" id="foo"/> non è vero? Perché non basta fare

$("#foo").val()

Credo che hai bisogno di spiegare che cosa si sta cercando di fare un po 'meglio. Se si scopre che

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

... funziona solo quando si dispone di un ingresso, forse quello che stai cercando è questo:

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

Ma così com'è, la sua domanda non è molto chiaro. Provare a modificare la tua domanda e prendere il vostro tempo per spiegare esattamente quello che vuoi.

Non è una risposta, ma ho avuto incredibili difficoltà a tirare un valore di campo nascosta all'interno di una cella di tabella (utilizzando tablesorter su quel tavolo, ovviamente), quindi sono molto contento di aver trovato questa riga di codice:

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

e funziona meravigliosamente.

Io uso anche la funzione ".Live", quindi funziona anche sui tavoli enormi.

GRAZIE !!!

HLR

Ho tre schede ciascuno con un pulsante Invia causando spalle postali. Dopo l'evento Click per il pulsante di invio, voglio che la scheda corrente a persistere.

Punto 1.

È stata aggiunta una asp: HiddenField all'interno del div div schede ( 'schede' contiene tutti i tre div che hanno i contenuti per le mie schede).

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

Punto 2.

Aggiornato il valore di sel_tab con l'evento click di ciascun pulsante che provoca un palo.

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

Passo 3. Nel mio js file Ho il seguente codice

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

Questo funziona anche se si sta utilizzando pagine master (sono). Non hanno bisogno la parte <% = foo.ClientID%>.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top