obtener valor de un td mediante un onchange select en otro td dentro del mismo tr en un foreach

publicado por: Anonymous

Tengo esta tabla creada con la paginación de laravel 5.3 se utiliza un foreach

<table class="table table-bordered">

              <tbody>
                @foreach($usuarios as $key => $tag)
                  <tr id="caputracorreo" data-userid="{{$tag->email}}">
                    <td>{{ ++$key }}</td>
                    <td>{{ $tag->name }}</td>
                    <td>{{ $tag->email}}</td>


                    <td> <select class="form-control" id="estadoactualiza" name="estadoactualiza" data-userid="{{$tag->email}}" onchange="actualizar(this)">
                      @foreach($estados as $estado)
                        @if ($estado->id == $tag->id_estado)
                         <option selected value="{{$estado->id}}">{{$estado->nombre}}</option>
                        @else
                        <option value="{{$estado->id}}">{{$estado->nombre}}</option>
                         @endif
                      @endforeach
                      {{ csrf_field() }}
                    </select>
                  </td>
                  </tr>
                @endforeach
              </tbody>
            </table>

            {{ $usuarios->links('vendor.pagination.paginadorusuarios') }}

y tengo este js con la acción del onchange

<script type="text/javascript">   
 function actualizar() {
 var id_estado = document.getElementById("estadoactualiza").value;
 var userid = $(caputracorreo).data('userid');
 alert (userid);
 }
</script>

Quiere obtener el td anterior del select, pero siempre me regresa el primer correo, digamos el primer td correo.

solución

Ok. Primero, un ID es irrepetible(o al menos así debería ser), por lo tanto debes hacer tus ids unicos para poder referenciarlos:

<table class="table table-bordered">

              <tbody>
                $index = 0;
                @foreach($usuarios as $key => $tag)
                  <tr id="caputracorreo" data-userid="{{$tag->email}}">
                    <td>{{ ++$key }}</td>
                    <td>{{ $tag->name }}</td>
                    <td>{{ $tag->email}}</td>


                    <td> <select class="form-control" id="estadoactualiza{{ $index }}" name="estadoactualiza" data-userid="{{$tag->email}}" onchange="actualizar({{ $index }})">
                      @foreach($estados as $estado)
                        @if ($estado->id == $tag->id_estado)
                         <option selected value="{{$estado->id}}">{{$estado->nombre}}</option>
                        @else
                        <option value="{{$estado->id}}">{{$estado->nombre}}</option>
                         @endif
                      @endforeach
                      {{ csrf_field() }}
                    </select>
                  </td>
                  </tr>
                @endforeach
              </tbody>
            </table>

            {{ $usuarios->links('vendor.pagination.paginadorusuarios') }}

y tengo este js con la acción del onchange

<script type="text/javascript">   
 function actualizar(numberid) {
 var id_estado = document.getElementById("estadoactualiza"+numberid).value;
 var userid = $(caputracorreo).data('userid');
 alert (userid);
 }
</script>

Se hace el id dinámico con un contador, ese id lo pasas como parámetro en tu función y la usas dentro de la misma.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *