Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

233
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!