Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

227
Vistas
¿Cómo ir a la celda anterior después de presionar la tecla tabulador?

Quiero validar la entrada del usuario al presionar la tecla tabulador. Funciona bien. Pero cuando el usuario ingresó datos incorrectos, quiero obligarlos a actualizar. Lo que significa que quiero enfocarme en la celda que se acaba de editar.

Lo intenté

  • celda.getElement().focus()
  • celda.getElement().click()
  • celda.navegar hacia la izquierda()
  • celda.navegarAnterior()

Pero nada funcionó.

¿Es posible simular presionar Shift + Tab a través de javascript?

Una pregunta más por qué

  • row.update({"c1": fieldValue}) actualiza la columna c1 pero
  • row.update({fieldName: fieldValue}) no lo hace, el valor de fieldName es "c1"

¿Cómo probar con jsFiddle ? Escriba, por ejemplo, 10+14 en la columna c1 y presione la tecla Tabulador. Recibe un mensaje de que los minutos "14" no están bien. Solo se permiten 0, 15, 30, 45.

 table.on('cellEdited', (cell) => { var fieldName = cell.getField() var fieldValue = cell.getValue() var fieldLength = fieldValue.length var row = cell.getRow() var acceptedMinutes = [0, 15, 30, 45] switch (fieldName) { case "c1": fieldValue = fieldValue.replace(",", "").replace("+", "").replace(".", "").replace(" ", "") switch (fieldLength) { case 1: case 2: fieldValue = fieldValue + ":00" break case 3: case 4: var position = fieldLength - 2 fieldValue = fieldValue.substring(0, position) + ":" + fieldValue.substring(position); break } var tmpArray = fieldValue.split(":") if (tmpArray[1]) { if (!acceptedMinutes.includes(Number(tmpArray[1]))) { console.log("minutes NOT ok") cell.getElement().focus() //cell.getElement().click() } else { console.log("minutes ok") } } var hour = Number(tmpArray[0]) if (hour > -0 && hour < 24) { console.log("hours ok") } else { cell.getElement().click() cell.getElement().focus() console.log(cell.navigateLeft()) console.log(cell.navigatePrev()) console.log(cell.navigateRight()) console.log("hours NOT ok") } row.update({ "c1": fieldValue }) // row.update({fieldName: fieldValue}) break } })
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No puede focus() la cell porque el elemento de la cell es un div y no tiene el elemento de input representado en él. Puedes usar cell.edit() para enfocar el elemento de input , pero debido a que el elemento de input necesita tiempo para renderizarse , puedes envolver la llamada edit() dentro de setTimeout() . Entonces se vería así:

 setTimeout(function() { cell.edit(); }, 100);

JSFiddle

Otra forma en la que puede investigar es personalizar sus propias combinaciones de teclas y deshabilitar la acción predeterminada para la tecla de tabulación. Luego, puede realizar su validación primero y luego usar navigateNext() o navigateRight() para pasar a la siguiente celda.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda