es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

En handsontable, después de seleccionar un día en el selector de fechas, se agrega una nueva fila.

Estoy utilizando la versión 10 de Handsontable, tengo un problema después de seleccionar una fecha desde el selector de fechas, se agrega una nueva fila. ¿Cómo puedo desactivar eso? Pero necesito obtener una nueva fila con la tecla “enter”.

Cualquiera puede probar con este código,

document.addEventListener("DOMContentLoaded", function() {
    var container2 = document.getElementById('example2'),
        hot2;

    hot2 = new Handsontable(container2, {
        data: Handsontable.helper.createSpreadsheetData(5, 5),
        colHeaders: true,
        minSpareRows: 1,
        columns: [
            {
                type: 'date',
                dateFormat: 'MM/DD/YYYY',
                correctFormat: true,
                datePickerConfig: {
                    firstDay: 0,
                    showWeekNumber: true,
                    numberOfMonths: 1,
                    licenseKey: 'non-commercial-and-evaluation',
                    disableDayFn(date) {
                        // Disable Sunday and Saturday
                        return date.getDay() === 0 || date.getDay() === 6;
                    }
                }
            },
            {
                type: 'text',
            },
            {

            },
            {

            }
        ]
    });
});
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para desactivar la adición de nuevas filas después de seleccionar una fecha en el selector de fechas en Handsontable versión 10 mientras todavía se permite con la tecla de Enter, puede agregar el siguiente fragmento de código a la configuración del objeto hot2:

    beforeKeyDown: function(e) {
      if (e.key === "Enter") {
        return;
      }
      e.stopImmediatePropagation();
    }
    

    Este código evitará que el evento keydown se propague más si la tecla presionada no es la tecla Enter, lo que significa que se evitará el comportamiento predeterminado de crear una nueva fila después de seleccionar una fecha. Sin embargo, si se presiona la tecla Enter, el comportamiento predeterminado aún estará permitido.

    El código actualizado con la nueva configuración se vería así:

    document.addEventListener("DOMContentLoaded", function() {
      var container2 = document.getElementById("example2"),
          hot2;
    
      hot2 = new Handsontable(container2, {
        data: Handsontable.helper.createSpreadsheetData(5, 5),
        colHeaders: true,
        minSpareRows: 1,
        beforeKeyDown: function(e) {
          if (e.key === "Enter") {
            return;
          }
          e.stopImmediatePropagation();
        },
        columns: [
          {
            type: "date",
            dateFormat: "MM/DD/YYYY",
            correctFormat: true,
            datePickerConfig: {
              firstDay: 0,
              showWeekNumber: true,
              numberOfMonths: 1,
              licenseKey: "non-commercial-and-evaluation",
              disableDayFn(date) {
                // Disable Sunday and Saturday
                return date.getDay() === 0 || date.getDay() === 6;
              }
            }
          },
          {
            type: "text",
          },
          {},
          {}
        ]
      });
    });
    

Comments are closed.