1

我通过按回车从组合框中选择一个选项时遇到问题。存在两个页面,其中一个页面使用 YUI 数据表,而另一个没有。我只有在带有 YUI 数据表的页面上才有这个问题。经过一番挖掘,我确信 YUI 数据表会导致页面上所有其他组件的输入键事件出现问题。如果我从页面中删除 YUI 数据表,它可以正常工作。

我将 datatable-beta.js 用于 yui-data 表,我们无法将其替换为较新的版本。与这个库有关的东西太多了,所以公司不想要它。

由于这个问题,我不能使用 enter 在简单的“html 选择标签”中选择一个选项。

我们如何解决这个问题?有人在 YI 图书馆遇到过类似的问题吗?

4

2 回答 2

1

您可以覆盖页面中的方法,这样您就不需要更改原始脚本。

只需像下面那样覆盖它(删除 e.keyCode==13),您对该页面的输入问题就会得到解决。

<script type="text/javascript>
YAHOO.widget.DataTable.prototype._onDocumentKeydown=function(e,oSelf)
{
  if((e.keyCode==27))
  {
        oSelf.cancelEditorData();
  }

}
</script>
于 2013-02-08T07:14:43.040 回答
0

我注释掉了一些代码块,以找出导致此问题的代码。我通过这种方式消除了很多代码部分并达到了这一行:

YAHOO.util.Event.addListener(document,"keydown",this._onDocumentKeydown,this);

这一行位于 datatable-beta.js 中,我不知道他们为什么要这样做。他们正在处理所有 dom 元素的 keydown 事件。这就是为什么我不能按回车键从组合框中选择一个选项。Combobox 只是一个示例,我的意思是我们不能对页面上的任何组件使用 enter。Handler方法的代码如下:

YAHOO.widget.DataTable.prototype._onDocumentKeydown=function(e,oSelf)
{
      if((e.keyCode==27))
      {
            oSelf.cancelEditorData();
      }
      if(e.keyCode==13)
      {
            YAHOO.util.Event.stopEvent(e);
            oSelf.saveEditorData();
      }
}

他们正在处理转义并输入字符。我不想评论这些行。它可能会影响其他代码块。我确实找到了问题,但您仍然可以提出解决方案。因为,即使我发现了问题,我仍在寻找在不更改原始脚本的情况下使用回车键的最佳方式。

于 2013-02-07T21:20:22.953 回答