我在通过回车从组合框中选择选项时遇到问题。存在两个页面,其中一个页面使用YUI数据表,而另一个页面不使用。我只在YUI数据表的页面上遇到了这个问题。经过一些挖掘,我确信YUI数据表会导致在页面上输入所有其他组件的关键事件的问题。如果我从页面中删除YUI数据表,它就可以正常工作。
我使用datatable-beta.js作为yui数据表,我们不能用新版本替换它。与这个图书馆有关的东西太多了,所以公司不想要它。
由于这个问题,我无法使用enter在简单的"html选择标记"中选择一个选项。
我们如何解决这个问题?是否有人在YI图书馆遇到过类似的问题?
您可以覆盖页面中的方法,这样就不需要更改原始脚本。
只需像下面那样覆盖它(e.keyCode==13已删除),该页面的输入问题就会得到解决。
<script type="text/javascript>
YAHOO.widget.DataTable.prototype._onDocumentKeydown=function(e,oSelf)
{
if((e.keyCode==27))
{
oSelf.cancelEditorData();
}
}
</script>
我注释了一些代码块,以找出导致此问题的代码。我通过这种方式消除了很多代码部分,并达到了这一行:
YAHOO.util.Event.addListener(document,"keydown",this._onDocumentKeydown,this);
这一行在datatable-beta.js上,我不知道他们为什么会这样做。他们正在处理所有dom元素的keydown事件。这就是为什么我不能点击回车键从组合框中选择一个选项。组合框只是一个示例,我的意思是我们不能对页面上的任何组件使用enter。处理程序方法的代码如下:
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();
}
}
他们正在处理转义和输入字符。我不想评论这些话。它可能会影响其他代码块。我确实发现了这个问题,但你仍然可以提出解决方案。因为,即使我发现了这个问题,我仍然在寻找在不更改原始脚本的情况下使用回车键的最佳方式。