JQuery - Problemas con JQuery y multiples select

 
Vista:
Imágen de perfil de Miguel Angel

Problemas con JQuery y multiples select

Publicado por Miguel Angel (3 intervenciones) el 02/03/2017 20:24:24
Hola tengo un problema para seleccionar el valor de una lista de select.Tengo una tabla donde cada elemento tiene un campo select(ademas de otras cosas)..con dos valores si o no..el caso es que hago una funcion con javascript para ir recorriendo la tabla e ir guardando los valores de cada fila para despues salvarlos en una BD..cuando trato de cojer los valores de los select solo me coje el primero perteneciente a la primera fila y a los otros me les pone el mismo valor del primero..adjunto el codigo para mejor comprension...muchas gracias por las respuestas..

mi plantilla HTML..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<div  class="table-responsive">
	<table class="table" id = "coments_host">
		<thead>
		<tr style="text-align: center;">
			<th>Id</th>
			<th>Hostal</th>
			<th> Valoracion </th>
			<th> Comentario</th>
			<th>User</th>
			<th>Fecha</th>
			<th>Publicado</th>
 
 
		</tr>
		</thead>
		<tbody>
		{% for c_hostal in comentarios_hostales %}
			<tr>
				<td>{{ c_hostal.id }}</td>
				<td>{{ c_hostal.hostal.nombre }}</td>
				<td> {{ render(controller('AppBundle:Valoracion:rating',{ 'rating': c_hostal.valoracion  } )) }}  </td>
				<td class="mitooltip">
					<a href="#" class="tooltip" data-toggle="tooltip"
						data-placement="left" title="{{ c_hostal.comentario }}">
						{{ c_hostal.comentario |truncate(50, true) }}
					</a>
				</td>
				<td>{{ c_hostal.user }}</td>
				<td>{{ c_hostal.created |date('d m y')}}</td>
 
				<td>
				<select name="publicado" id = "publicado">
					<option value="Si">Si</option>
					<option value="No">No</option>
				</select>
				</td>
 
			</tr>
		{% endfor %}
		</tbody>
	</table>
	<div>
		<button type="button" class="btn btn-default" id = "btn_save" onclick= "showData()">Save Changes</button>
	</div>

mi funcion javascript..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function showData() {
 
	$("#coments_host tbody tr").each(function (index)
	{
		var campo1, campo2, campo3, campo4, campo5, campo6,campo7;
		$(this).children("td").each(function (index2)
		{
			switch (index2)
			{
				case 0: campo1 = $(this).text();
					break;
				case 1: campo2 = $(this).text();
					break;
				case 2: campo3 = $(this).text();
					break;
				case 3: campo4 = $(this).text();
					break;
				case 4: campo5 = $(this).text();
					break;
				case 5: campo6 = $(this).text();
					break;
				case 6:
					campo7 = $('select[name=publicado]').val();
					break;
			}
 
		})
		alert(campo1 + ' - ' + campo2 + ' - ' + campo3 + campo4 + ' - ' + campo5 + ' - ' + campo6 + ' - ' + campo7);
	})
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 39
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

Problemas con JQuery y multiples select

Publicado por Alejandro (14 intervenciones) el 03/03/2017 00:50:26
Hola Miguel, el problema es que todos los select tiene el mismo valor para el atributo name, es por eso que siempre toma el primer elemento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Problemas con JQuery y multiples select

Publicado por Miguel (3 intervenciones) el 03/03/2017 13:43:02
Ok..muchas gracias Alejandro..entonces como lo haria?..como puedo acceder al al valor individual de cada select?..una idea seria generar un name unico para cada select de la lista?.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 39
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

Problemas con JQuery y multiples select

Publicado por Alejandro (14 intervenciones) el 04/03/2017 00:00:00
Hola,desconozco lo que usas para el backend, pero para recuperar el campo select debes obtenerlo por el campo name, por lo que deben ser distintos los valores de este para cada uno de estos si no siempre tomara el primero de ellos.

Para ver lo valores desde javascript que puedes hacer es antes de la linea 6, previo a ejecutar el segundo .each(), guardas la referencia al $(this) que hace referencia al tr, y después en una variable guardas el valor del select que se encuentra dentro de la fila, ejemplo:
1
2
var $currentTR = $(this);
var selectValue = $currentTR.find('select[name=publicado]').val();

Nos comentas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas con JQuery y multiples select

Publicado por Miguel (3 intervenciones) el 06/03/2017 18:58:15
Ok..eso me imagine .. voy a probar y despues les digo ..muchas gracias por la ayuda...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar