En realidad estoy usando Jqgrid pero en la consola del navegador html se ve así
<tbody> <tr> <td></td> <td></td> <td> <input type="text" id="priority_1per" value='10'>hello <input> </td> <td> <input type="text" id="priority_2per" value='20'>hellob <input> </td> </tr> </tbody>hay una columna: "prioridad1" "prioridad2" que tiene un cuadro de texto
$('body').on('change', '#priority_1per', function () { //debugger; var priority1 = $(this).val(); var priority2 = $(this).closest("tr").children("td").find("input[type=text]").find("#priority_2per") alert(priority1) alert(priority2) console.log(priority2) });=>var prioridad1 estoy obteniendo el valor (esto).val() => pero no estoy obteniendo el valor de los datos de la columna de prioridad2 (no estoy haciendo crrt atravesando o no)
jQuery.fn.init [prevObject: jQuery.fn.init(10)] length: 0 prevObject: jQuery.fn.init(10) [input#productpriority.form-control.productpriority, input#divisionname.form-control._division.ui-autocomplete-input, input#categoryname.form-control.category.ui-autocomplete-input, input#subcategoryname.form-control.subcategory.ui-autocomplete-input, input#priority_1.form-control.plantname.plantCode1, input#priority_1per.form-control.priority_1per.number, input#priority_2.form-control.plantname.plantCode2, input#priority_2per.form-control.priority_2per.number, input#priority_3.form-control.plantname.plantCode3, input#priority_3per.form-control.priority_3per.number, prevObject: jQuery.fn.init(12)] [[Prototype]]: Object(0)este es el error que estoy encontrando (no es un error sino un error en travesal)
POR FAVOR, ayúdame con el aspecto html
El problema se debe a su lógica find() . Usas el primer find() para obtener ambos elementos input type="text" , luego el segundo intenta encontrar un elemento secundario #priority_2per dentro del primer input . Esto claramente no se puede encontrar ya que no es HTML válido.
Para solucionar el problema, elimine el primer find() y agregue val() :
var priority2 = $(this).closest("tr").children("td").find("#priority_2per").val() Sin embargo , como los elementos tienen atributos de id y la id debe ser única en el DOM, la lógica transversal es completamente redundante. Puede seleccionar directamente por el id .
Además, su HTML no es válido. Los elementos <input /> no tienen etiqueta de cierre. Aquí hay un ejemplo de trabajo completo:
$('body').on('change', '#priority_1per', function() { var priority1 = $(this).val(); var priority2 = $("#priority_2per").val(); console.log(priority1); console.log(priority2); }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <table> <tbody> <tr> <td></td> <td></td> <td> <input type="text" id="priority_1per" value="10" />hello </td> <td> <input type="text" id="priority_2per" value="20" />hellob </td> </tr> </tbody> </table>