Quiero crear un elemento de entrada para mostrar usando jquery después del menú desplegable seleccionado y mostrar el elemento de entrada en el repetidor, pero el problema es que solo muestro el elemento de entrada en un elemento de entrada. Gracias por su ayuda.
Este es un repetidor de formulario de código html
<tbody> @foreach($siswas as $key => $nilai) <tr> <td><input type="text" class="form-control" id="nilai_sikap" name="nilai_sikap[]"></td> </tr> @endforeach </tbody>Este es un script para mostrar y ocultar el elemento de entrada en id="nilai_sikap"
$('#mapel_id').on('change', function() { if ( this.value == 17 || this.value == 18) $("#nilai_sikap")[$i].show(); else $("#nilai_sikap").hide(); }).trigger("change")De esto solo obtengo un elemento de entrada como este ingrese la descripción de la imagen aquí
pero quiero mostrar el elemento de entrada en cada fila como esta ingrese la descripción de la imagen aquí
Hay varios problemas con este código que puedo ver. Primero, está creando múltiples identificaciones duplicadas con foreach. esta es una mala práctica, pero no descifrar el código en sí mismo. Pero le sugiero que elimine el atributo id por completo. Además, ¿de dónde viene el $i?
En segundo lugar, donde te equivocas es el selector. Estás seleccionando los artículos por su id. Para seleccionar un elemento por el atributo de nombre, debe seleccionarlo así.
$('input[name="nilai_sikap[]"]')En resumen, su código debe ser:
$('#mapel_id').on('change', function() { if ( this.value == 17 || this.value == 18) $('input[name="nilai_sikap[]"]').show(); else $('input[name="nilai_sikap[]"]').hide(); }).trigger("change")Prueba esta solución
<tbody> @foreach($siswas as $key => $nilai) <tr> <td><input type="text" class="form-control _my_input" name="nilai_sikap[]"></td> </tr> @endforeach </tbody>Cambie el código js como se muestra a continuación
$('#mapel_id').on('change', function() { if ($(this).val() == 17 || $(this).val() == 18){ $(document).find('._my_input').show(); } else { $(document).find('._my_input').hide(); } })