Obtener dos valores de control [cerrado]

Tengo dos controles cuyo código se ejecuta en tiempo de ejecución de la siguiente manera:

ctl00_PlaceHolderMain_SPWebPartManager_g_3c1ba10a_23ec_4ab5_b303_18f8bd7ee7e7_ctl00_gdvItinerary_ctl03_txtTravelDate      
ctl00_PlaceHolderMain_SPWebPartManager_g_3c1ba10a_23ec_4ab5_b303_18f8bd7ee7e7_ctl00_gdvItinerary_ctl04_txtTravelDate

¿Cómo obtengo los valores de los dos controles anteriores usando jQuery?

preguntado el 01 de julio de 12 a las 10:07

Disculpe pero que es esto? Si es id de control, puede utilizar $('#ctl00_PlaceHolderMain_SPWebPartManager_g_3c1ba10a_23ec_4ab5_b303_18f8bd7ee7e7_ctl00_gdvItinerary_ctl03_txtTravelDate') para el primero y lo mismo para el segundo -

Esto no tiene mucho sentido. Edite la pregunta para proporcionar más información y mostrar con precisión lo que está sucediendo, lo que está intentando y cuál es el efecto deseado. Ha publicado dos cadenas, y no tengo idea de qué son o a qué se refieren. -

@Jashwant :) ya que está interesado, hermano, estos son valores agregados dinámicamente de control de usuario (.net), por lo tanto, estos ctl para empezar, para el OP, recomendaría agregar Clase atribuya al elemento de entrada o html y acceda a él de esta manera $('.class_name').val(), ¡espero que esto ayude! :)) -

Si el prestado id no va a cambiar cada vez, esto debería funcionar. También, recuerdo .net 4.0 introdujo una propiedad que le permite mantener la identificación del cliente. Además, hay algunos clientid método también. -

@Jashwant correcto de hecho, :) ! +1 para ambos establecer una respuesta reflexiva ¡Te votaré +! -

2 Respuestas

En asp.net, su control id se cambia en tiempo de ejecución.

Si tu identificación fue mycontrol, se cambiaría a blahblahblahmycontrol (id estará allí al final) en el lado del cliente.

¿Entonces

si tiene un control asp.net (cuadro de texto), como a continuación,

<asp:TextBox runat='server' id='mytxtbox'></asp:TextBox>

tu puedes hacer,

$("input[id$='mytxtbox']").val();

Selecciona todo input etiquetas que terminan en _mytxtbox

o puede hacer algo como esto si el javascript está en el mismo archivo .aspx

$('#<%=mytxtbox.ClientID %>').val()

Si está utilizando asp.net 4.0,

Puede añadir ClientMode propiedad a Static

<asp:TextBox ID="mytxtbox" runat="server" ClientIDMode="Static"></asp:TextBox>

Esto conservará la identificación de TextBox a mytxtbox

Entonces, puedes hacer,

$('#mytxtbox').val();


Sí, también puede ver el código fuente y usar el convertido id como esto,

var txtboxValue = $('#ctl00_PlaceHolderMain_SPWebPartManager_g_3c1ba10a_23ec_4ab5_b303_18f8bd7ee7‌​e7_ctl00_gdvItinerary_ctl03_txtTravelDate').val();

Pero no es recomendable.

Respondido 01 Jul 12, 12:07

Sencillo - uso .val():

var firstValue  = $('#ctl00_PlaceHolderMain_SPWebPartManager_g_3c1ba10a_23ec_4ab5_b303_18f8bd7ee7‌​e7_ctl00_gdvItinerary_ctl03_txtTravelDate').val();
var secondValue = $('#ctl00_PlaceHolderMain_SPWebPartManager_g_3c1ba10a_23ec_4ab5_b303_18f8bd7ee7e7_ctl00_gdvItinerary_ctl04_txtTravelDate').val();

Deberías considerar seriamente usar shorted ids. A partir de estos idEstoy solo, tengo absolutamente ninguna idea lo que representa el valor.

Puedes hacerlo más legible con:

var baseID = "#ctl00_PlaceHolderMain_SPWebPartManager_g_3c1ba10a_23ec_4ab5_b303_18f8bd7ee7‌​e7_ctl00_gdvItinerary_";

var firstValue  = $(baseID + 'ctl03_txtTravelDate').val();
var secondValue = $(baseID + 'ctl04_txtTravelDate').val();

Respondido 01 Jul 12, 11:07

La codificación dura de los identificadores de cliente generados por asp.net es una muy mala idea ... si cambia el árbol contenedor de este control, su código se romperá ... intente usar <% = usercontrol.ClientID %> en su lugar - AHMED EL-HAROUNY

@AHMED: no soy un usuario de asp.net. La pregunta tampoco fue etiquetada con ella. Aunque tienes razón. - Eric

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.