Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

232
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda