2012-01-18 15 views
20

Ho due pagine. Dalla prima pagina apro una modal con una querystring che contiene quel valore di un nome client. Quindi lo uso per impostare un campo nascosto sul modale che si è aperto.Ottieni il valore di un asp: HiddenField usando jQuery

Ho bisogno di un controllo TextBox sul nuovo modale per visualizzare il valore inviato dalla prima schermata.

Ho provato ricevendo il valore utilizzando:

var hv = $('hidClientField').val();` 

Ma questo non sembra funzionare.

Questo è il mio campo nascosto:

<asp:HiddenField ID="hidClientName" runat="server" />` 

Ho impostato nel codice dietro il Page_Load in questo modo:

hidClientName.Value = Request.QueryString["Client_Name"] ?? "";` 

Tutte le idee sarà molto apprezzato.

risposta

42

provare uno qualsiasi dei seguenti

  1. Se il controllo ASP.Net e JavaScript entrambi sono sulla stessa pagina, quindi utilizzare

    var hv = $("#"+ '<%= hidClientField.ClientID %>').val(); 
    
  2. Se vuoi accedere al controllo da alcuni file di JS, quindi

    // 'id$' will cause jQuery to search control whose ID ends with 'hidClientField' 
    var hv = $('input[id$=hidClientField]').val(); 
    
  3. È possibile utilizzare la classe di selezione nome di raggiungere lo stesso. Dai un'occhiata alla domanda simile a this.

In asp.net, l'ID di controllo viene alterato. Per questo motivo il tuo codice non funziona.

Spero che questo funzioni per voi.

+1

IMO, questo modo di fare non dovrebbe essere usato perché quando il codice js è in un file .js esterno, il '<%...%>' non verrà analizzato. –

+0

+1 hai capito bene. Stavo aggiornando la mia risposta per quello :) –

7

hai dimenticato il # nel selettore per selezionare da ID:

var hv = $('#hidClientField').val(); 

Anche se asp.net genera ID sulla base dei contenitori di denominazione per cui si potrebbe finire con un ID come ctl1$hidClientField. È quindi possibile utilizzare l'attributo "si conclude con" selettore:

var hv = $('input[id$=hidClientField]').val(); 

Controllare la documentazione relativa jQuery selectors

3

Poiché jQuery non sa nulla di asp:HiddenField. Sembra nella struttura HTML in cui hai <input type="hidden" name="ctl00$cph_main$HiddenFieldServerDateTime" id="ctl00_cph_main_HiddenFieldServerDateTime" .... Quindi non c'è alcun input con ID= HiddenFieldServerDateTime. Ci sono alcuni modi per superare questo:

  • Utilizzare un selettore CSS:

    <asp:HiddenField ID="HiddenFieldServerDateTime" 
           runat="server" 
           CssClass="SomeStyle" /> 
    

    con il seguente selettore: var serverDateTime = $(".SomeStyle").val();

    CssClass non è una classe disponibile sulla classe HiddenField (e non ha una collezione Attributes, quindi non è possibile aggiungerla manualmente).

  • Uso ClientID proprietà:

    var serverDateTime = $("#<%= HiddenFieldServerDateTime.ClientID %>").val(); 
    
  • Avvolgere il campo nascosto in qualcosa che si può selezionare:

    <div class="date-time-wrap"> 
        <asp:HiddenField ID="..." runat="server" /> 
    </div> 
    

     

    var serverDateTime = $('.date-time-wrap input[type=hidden]').val(); 
    
+0

Come complicata è tutto questo. '<%...%>' non funzionerà in file javascript esterni e aggiungere markup extra è davvero doloroso. –

4

Usa Selettore ID.

var hv = $('#hidClientName').val(); 

O

var hv = $('#<%=hidClientName.ClientID%>').val(); 
0

Se si utilizzano i controlli di Asp.net, il server mancherà gli ID di controllo. Aggiunge un po 'di informazioni sulla gerarchia dell'albero di controllo estraneo nell'ID. È necessario fare riferimento a ciò che l'ID acutale è quello che viene visualizzato, che è disponibile con la proprietà ClientID sul controllo (hfUser.ClientID) o accedere al controllo in un modo diverso, più indiretto, come trovare i controlli padre, quindi cercare tra i suoi i bambini a trovare il tuo controllo

Se non è necessario utilizzare il controllo asp.net HiddenField, provare semplicemente a utilizzare un normale input html normale.

-1

Si prega di provare questo codice.

var hv = $("#<%= hidClientField.ClientID %>").val(); 
0

si può fare in questo modo

var hval = $('#<%= hdMarkupPercentage.ClientID%>').val(); 
Problemi correlati