Tengo un Script jquery sacado de la pagina web 9lesson. Concretamente es el "Live Table Edit" que sirve para editar datos en la BD directamente desde la tabla web sin tener que ir al phpmyadmin o similares.
El script lo que hace es que al hacer clic en una fila sustitulle la fila de la tabla por un formulario, editas el texto y lo envia a la BD mediante ajax.
Hasta aqui todo correcto, mi problema es cuando he intentado que no se tenga que hacer clic sobre la fila si no sobre una celda, ya que si no la fila me queda un poco inutilizada a la hora de poner links...
No soy muy habil con el jscript y similares, a ver si me podeis hechar una mano.
Os pongo aqui parte del codigo de la web (la parte que implica a la tabla) y el script en cuestion.
Vease que para que esto funcione tal como esta la "clase" del tr ha de ser "edit_tr" y lo que busco es que la ultima celda (donde pone CLICK) sea el lugar donde haya que cliquear para activar el script.
Código PHP:
Ver original
echo ' <tr class="edit_tr" id="'.$idCliente.'"> <td class="edit_td"> <span id="one_'.$idCliente.'" class="text">'.$idCliente.'</span> <input type="text" value="'.$idCliente.'" class="editbox" id="one_input_'.$idCliente.'" /> </td> <td class="edit_td"> <span id="two_'.$idCliente.'" class="text">'.$nombre.'</span> <input type="text" value="'.$nombre.'" class="editbox" id="two_input_'.$idCliente.'" /> </td> <td class="edit_td"> <span id="three_'.$idCliente.'" class="text">'.$apellidos.'</span> <input type="text" value="'.$apellidos.'" class="editbox" id="three_input_'.$idCliente.'" /> </td> <td class="edit_td"> <span id="four_'.$idCliente.'" class="text">'.$pais.'</span> <input type="text" value="'.$pais.'" class="editbox" id="four_input_'.$idCliente.'" /></td> <td class="edit_td"> <span id="five_'.$idCliente.'" class="text">'.$telefono.'</span> <input type="text" value="'.$telefono.'" class="editbox" id="five_input_'.$idCliente.'" /> </td> <td class="edit_td"> <span id="six_'.$idCliente.'" class="text">'.$email.'</span> <input type="text" value="'.$email.'" class="editbox" id="six_input_'.$idCliente.'" /> </td> <td> CLICK </td> </tr> ';
Aqui la parte del CSS que incplica al script:
Código CSS:
Ver original
.editbox { display:none; } .editbox { background-color:#ffffcc; border:solid 1px #000;; }
Y aqui el Script:
Código Javascript:
Ver original
$(document).ready(function() { $(".edit_tr").click(function() { var ID=$(this).attr('id'); $("#one_"+ID).hide(); $("#two_"+ID).hide(); $("#three_"+ID).hide(); $("#four_"+ID).hide(); $("#five_"+ID).hide(); $("#six_"+ID).hide();//New record $("#one_input_"+ID).show(); $("#two_input_"+ID).show(); $("#three_input_"+ID).show(); $("#four_input_"+ID).show(); $("#five_input_"+ID).show(); $("#six_input_"+ID).show();//New record }).live('change',function(e) { var ID=$(this).attr('id'); var one_val=$("#one_input_"+ID).val(); var two_val=$("#two_input_"+ID).val(); var three_val=$("#three_input_"+ID).val(); var four_val=$("#four_input_"+ID).val(); var five_val=$("#five_input_"+ID).val(); var six_val=$("#six_input_"+ID).val();//New record var dataString = 'id='+ ID +'&idCliente='+one_val+'&nombre='+two_val+'&apellidos='+three_val+'&pais='+ four_val+'&telefono='+five_val+'&email='+six_val; if(one_val.length>0 && two_val.length>0 && three_val.length>0 && four_val.length>0 && five_val.length>0 && six_val.length>0) { $.ajax({ type: "POST", url: "../libs/table_edit_ajax_clientes.php", data: dataString, cache: false, success: function(e) { $("#one_"+ID).html(one_val); $("#two_"+ID).html(two_val); $("#three_"+ID).html(three_val); $("#four_"+ID).html(four_val); $("#five_"+ID).html(five_val); $("#six_"+ID).html(six_val);//New record e.stopImmediatePropagation(); } }); } else { alert('Enter something.'); } }); // Edit input box click action $(".editbox").mouseup(function() { return false }); // Outside click action $(document).mouseup(function() { $(".editbox").hide(); $(".text").show(); }); });
Obiamente hay mas css, html, php y demas, pero creo que no influllen para nada aqui, pero si es necesario diganmelo y lo pongo tambien.
Saludos.