2013-02-07 28 views
1

我在通過按Enter鍵從組合框中選擇一個選項時遇到問題。有兩個頁面存在,其中一個頁面使用yui數據表,而另一個頁面不存在。我只有在使用yui數據表的頁面上有這個問題。經過一番挖掘,我確信yui數據表會導致在頁面上輸入所有其他組件的關鍵事件的問題。如果我從頁面中刪除yui數據表,它沒有任何問題。YUI Datatable Blocks在頁面輸入其他組件的事件

我對yui-data表使用datatable-beta.js,我們無法用新版本替換它。有這麼多的東西與這個圖書館有關,所以它不是公司想要的。

由於這個問題,我無法使用回車在簡單的「html選擇標記」中選擇一個選項。

我們如何解決這個問題?有人會遇到類似yui圖書館的問題嗎?

回答

1

您可以重寫頁面中的方法,以便不需要更改原始腳本。

只是像下面覆蓋它(e.keyCode == 13刪除),您的輸入問題,該頁面將被解決。

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

} 
</script> 
+0

很不錯的主意,我沒有碰到別的地方。我只是忽略了那個頁面。它現在有效,謝謝。 – ahmetdursun

0

我註釋了一些代碼塊來找出哪些代碼導致此問題。我通過這種方式消除了大量的代碼部分,並達成這一行:

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

這條線是在數據表中,beta.js,我不知道爲什麼他們做了這樣的事情。他們正在處理所有dom元素的keydown事件。這就是爲什麼我無法從輸入框中選擇組合框中的選項。 Combobox只是一個示例,我的意思是我們不能在頁面中使用任何組件的輸入。 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(); 
     } 
} 

他們正在處理轉義和輸入字符。我不想評論這些內容。它可能會影響其他代碼塊。我確切地發現了這個問題,但你仍然可以提出一個解決方案。因爲,即使我發現問題,我仍然在尋找最佳方式來使用回車鍵而不改變原始腳本。

相關問題