如何触发对可动手操作的行/单元格的点击?

Posted

技术标签:

【中文标题】如何触发对可动手操作的行/单元格的点击?【英文标题】:How to trigger a click on a handsontable row/cell? 【发布时间】:2020-08-03 02:43:37 【问题描述】:

我设置了一个 afterOnCellMouseDown 事件,单击单元格后我需要做很多事情。

我想知道是否有办法在handsontable 中触发单元格上的点击事件?

我知道有一种方法可以选择一行或一列,但我特别需要触发一个点击事件,以便触发我的 afterOnCellMouseDown。

有什么想法吗?

谢谢!

【问题讨论】:

我不确定。什么事件会触发点击事件?你能举个例子吗? 这是我在 Github 上打开的一个线程,如果它将来有用的话。 github.com/handsontable/handsontable/issues/6822 @KBell - 感谢您的联系 - 这应该是我尝试联系的演示 jsfiddle.net/vr29a1fh 【参考方案1】:

Handsontable 团队的 Piotr 帮助我解决了这个问题。 他准备了演示 这是一个链接 - https://jsfiddle.net/mfhqz69L/

你需要知道handsontable不能监听click,因为click是在完整的click动作发生后触发的;也就是说,当指针保持在同一元素内时,按下并释放鼠标按钮。 mousedown 在最初按下按钮的那一刻被触发。 这是完整文档的链接 - https://developer.mozilla.org/en-US/docs/Web/API/Element/mousedown_event

var hot = new Handsontable(hotElement, hotSettings);

function triggerMouseEvent(type, target) 
  const event = document.createEvent('MouseEvent');

  event.initMouseEvent('mousedown', true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);
  target.dispatchEvent(event);


var hotCell = hot.getCell(0, 0);

triggerMouseEvent('mousedown', hotCell);

【讨论】:

我正在使用 Selenium Webdriver 测试一个页面 - 并且必须能够点击一个可动手操作的行。上面的代码是解决方案的一半:我需要在 'mousedown' 之后直接添加一个 'mouseup' 事件以有效地执行完全点击,因为某些依赖于点击事件的 javascript 永远不会被触发。【参考方案2】:

我不确定这是否是您正在寻找的,但这就是我正在做的事情。它非常适合我的需求。

afterOnCellMouseDown: function(event, coords) 
    if(coords.col == 18) // Column 18 of my table
    
        let $id = hot.getDataAtCell(coords.row, 0); // row number and column number
        //console.log($id); // testing the results
        let $details = getOrderDetails($id); // function to pull in data to another section of the DOM
     else 
       clearDetailInformation(); // functions to clear a few sections of the DOM
     // end if
    hot.selectRows(coords.row); // puts a border around the clicked ROW
     // end afterOnCellMouseDown

【讨论】:

以上是关于如何触发对可动手操作的行/单元格的点击?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 的 didselectrowatindexpath 中触发按钮操作方法,目标 c

我怎么知道之前触发了SelectionChange过程的行号?

UITableView以编程方式调用滑动操作

excel如何批量设置单元格宽度和高度?

如何将EXCEL表格里一个单元格的数据拆分为两列

在EXCEL中 如何用VBA查找某特定单元格并返回该单元格的行和列值?