2012-01-18 37 views
20

Tengo dos páginas. Desde la primera página, abro un modal con una cadena de consulta que contiene ese valor de un nombre de cliente. Luego uso esto para establecer un campo oculto en el modal que se abrió.Obtenga el valor de un asp: HiddenField usando jQuery

Necesito un TextBox en el nuevo modal para mostrar el valor que se ha enviado desde la primera pantalla.

He intentado conseguir el valor usando:

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

Pero esto no parece funcionar.

Ésta es mi campo oculto:

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

lo fijo en el código detrás en el Page_Load como esto:

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

será muy apreciada Cualquier idea.

Respuesta

42

probar cualquiera de los siguientes

  1. Si el control de ASP.Net y javascript ambos están en la misma página, a continuación, utilizar

    var hv = $("#"+ '<%= hidClientField.ClientID %>').val(); 
    
  2. Si quieres acceder al control desde algunos Archivo JS, luego

    // 'id$' will cause jQuery to search control whose ID ends with 'hidClientField' 
    var hv = $('input[id$=hidClientField]').val(); 
    
  3. Puede usar el selector de nombre de clase para lograr lo mismo. Consulte this pregunta similar.

En asp.net, la identificación de los controles se destruye. Debido a esto tu código no está funcionando.

Espero que esto funcione para usted.

+1

IMO, esta forma de proceder no debe utilizarse porque cuando el código js está en un archivo externo .js, el '<%...%>' no se analizará. –

+0

+1 tienes ese derecho. Estaba actualizando mi respuesta para eso :) –

7

se le olvidó la # en su selector para seleccionar por ID:

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

Aunque asp.net genera Identificación basado en los contenedores de nomenclatura por lo que podría terminar con un ID, como una ctl1$hidClientField. A continuación, puede utilizar el atributo "termina con" Selector:

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

Consulte la documentación sobre jQuery selectors

3

Debido a que jQuery no sabe nada sobre asp:HiddenField. Se ve en la estructura HTML donde tiene <input type="hidden" name="ctl00$cph_main$HiddenFieldServerDateTime" id="ctl00_cph_main_HiddenFieldServerDateTime" .... Entonces no hay entrada con ID= HiddenFieldServerDateTime. Hay algunas maneras de superar esto:

  • Utilice un selector CSS:

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

    con el siguiente selector: var serverDateTime = $(".SomeStyle").val();

    CssClass no es una clase disponible en la clase HiddenField (y no tiene una colección Attributes, por lo que no puede agregarla manualmente).

  • Uso ClientID propiedad:

    var serverDateTime = $("#<%= HiddenFieldServerDateTime.ClientID %>").val(); 
    
  • Envolver el campo oculto en algo que se puede seleccionar:

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

     

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

Cómo complicar todo lo que es. '<%...%>' no funcionará en archivos javascript externos y agregar marcado adicional realmente es doloroso. –

4

Uso Selector de ID.

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

O

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

Si está utilizando controles Asp.net, el servidor destruirá los identificadores de control. Agrega una gran cantidad de información de jerarquía de árbol de control en el ID. Necesita hacer referencia a qué es lo que se está obteniendo con la ID acutal, que está disponible con la propiedad ClientID en el control (hfUser.ClientID) o acceder a su control de una manera diferente, más indirecta, como encontrar los controles principales, luego buscar a través de su niños para encontrar su control.

Si no tiene que usar el control asp.net HiddenField, intente simplemente usar una entrada html normal antigua.

-1

Por favor, pruebe este código.

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

que usted puede hacer de esta manera

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