YUI数据表块在A页面输入其他组件的事件

时间:2013-02-07 12:40:06

标签: javascript-events yui-datatable

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

我在yui-data表中使用datatable-beta.js,我们无法用更新的版本替换它。这个图书馆有很多东西,所以公司不想要它。

由于此问题,我无法使用enter在简单的“html选择标记”中选择选项。

我们如何解决这个问题?有人面对yui库的类似问题吗?

2 个答案:

答案 0 :(得分:1)

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

如下所示覆盖它(e.keyCode == 13已删除),您的该页面的输入问题将得到解决。

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

}
</script>

答案 1 :(得分: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();
      }
}

他们正在处理逃脱并输入字符。我不想评论这些内容。它可能会影响其他代码块。我确切地发现了问题,但您仍然可以提出解决方案。因为,即使我发现了问题,我仍然在不改变原始脚本的情况下搜索使用回车键的最佳方法。

相关问题