Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Actualizar input al ordenar con sortable

Estas en el tema de Actualizar input al ordenar con sortable en el foro de Jquery en Foros del Web. Hola, estoy tratando de actualizar los input de la posición que deja jqueryui sortable al ordenar una fila y por alguna razón que no logro ...
  #1 (permalink)  
Antiguo 02/12/2016, 05:53
 
Fecha de Ingreso: octubre-2015
Ubicación: españa
Mensajes: 53
Antigüedad: 9 años, 1 mes
Puntos: 1
Actualizar input al ordenar con sortable

Hola, estoy tratando de actualizar los input de la posición que deja jqueryui sortable al ordenar una fila y por alguna razón que no logro comprender no quiere hacerlo

este es el codigo que estoy usando:

Código HTML:
<table id="sortable_nav">
  <tbody class="ordenable">
  <tr>
    <td class="ui-state-default">
        <input type="text" class="ordena" value="1">1 Apple 
        <div class="ui-state-default sortable-number">1</div>
    </td>
   </tr>
   </tbody>
   
   <tbody class="ordenable">
    <tr>
    <td class="ui-state-default">
        <input type="text" class="ordena" value="2">2 Caca
        <div class="ui-state-default sortable-number">2</div>
    </td>
  </tr>    
    <tr>
    <td class="ui-state-default">
         <input type="text" class="ordena" value="3">3 Banana
        <div class="ui-state-default sortable-number">3</div>
    </td>
  </tr>
  </tbody>
  
<tbody class="ordenable">
<tr>    
    <td class="ui-state-default">
        <input type="text" class="ordena" value="4">4 Ginger
        <div class="ui-state-default sortable-number">4</div>
    </td>
  </tr>    
  </tbody>
  
<tbody class="ordenable">
<tr>
  <td class="ui-state-default">
        <input type="text" class="ordena" value="5">5 Watermelon
        <div class="ui-state-default sortable-number">5</div>
    </td>
  </tr>    
  </tbody>
  <tbody class="ordenable">
  <tr>
  <td class="ui-state-default">
       <input type="text" class="ordena" value="6">6 Blackberry
        <div class="ui-state-default sortable-number">6</div>
    </td>
  </tr> 
  </tbody>  
</table> 
Código:
$("#sortable_nav").sortable({
items: ".ordenable",
	cursor: 'move',
	opacity: 0.2,
    update: function(event, ui) {
        var $lis = $(this).children('tbody');
        $lis.each(function() {
            var $li = $(this);
            var newVal = $(this).index() + 1;
            $(this).children('.ordena').val(newVal);
            $(this).children('.sortable-number').html(newVal);
          
        });
    }
}).disableSelection();
aqui se puede ver funcionando http://jsfiddle.net/zgQZf/572/

entiendo o creo que el problema esta aquí var $lis = $(this).children('tbody'); que debería contar los tbody que hay para cambiar el valor, pero nada no va :_(

a ver si alguien me puede echar una mano para resolverlo que llevo ya dos días con esto y no doy con el problema.

este es el codigo original que he modificado y que si funciona http://jsfiddle.net/lesson8/zgQZf/light/
  #2 (permalink)  
Antiguo 02/12/2016, 13:00
 
Fecha de Ingreso: octubre-2015
Ubicación: españa
Mensajes: 53
Antigüedad: 9 años, 1 mes
Puntos: 1
Respuesta: Actualizar input al ordenar con sortable

Tengo una segunda version que si cambia el valor, pero por algun motivo no lo pone en el input

Código:
$("#ordenable").sortable({ 
    update: function(event, ui) {  
        $('table tr').each(function() {
        	var newVal = $(this).index() + 1;
          	$(this).children('.ordena').html(newVal);
            $(this).children('td:first-child').html(newVal);
        });
    }
}).disableSelection();
en el texto del td lo pone perfecto, pero en el input con clase .ordena no cambia nada ¿que estoy poniendo mal?
  #3 (permalink)  
Antiguo 02/12/2016, 13:36
 
Fecha de Ingreso: octubre-2015
Ubicación: españa
Mensajes: 53
Antigüedad: 9 años, 1 mes
Puntos: 1
Respuesta: Actualizar input al ordenar con sortable

Me respondo a mi mismo con la solución por si a alguien le sirve

Código:
$("#sortable_nav").sortable({
	items: ".ordenable",
	cursor: 'move',
	opacity: 0.2,
	update: function(event, ui) {
		$('.ordenable').each(function() {
			var newVal = $(this).index() + 1;
			$(this).find('. ordena').val(newVal);
		});
	}
}).disableSelection();
lo mismo hay alguna forma mas elegante de hacerlo, pero esta funciona de momento :)

Etiquetas: input, sortable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:24.