2010-10-28 49 views
2

我有一個由多個輸入文本搜索條件組成的JavaScript疊加層。當用戶按下在任何這些輸入中輸入鍵時,我想模仿搜索按鈕的行爲。如何處理Javascript覆蓋中的輸入鍵?

如果只有一個輸入,我知道如何處理回車鍵。我定義輸入爲:

<input type=\"text\" class=\"txtOrgNmFilter inputBox\" onkeyup=\"ClientsListControl.onFilterKeyup(event);\" /> 

,並在onFilterKey了

onFilterKeyup: function(event) { 
    if (event.keyCode == 13) { 
     $(".txtOrgNmFilter").click(); 
    } 
} 

我的問題如下:如果我有幾個輸入的文本,我需要添加onKeyUp屬性在所有這些還是有更簡單的方法(類似於表單提交操作)?

我的疊加是一個表

+1

爲什麼你逃脫你的雙引號? – 2010-10-28 17:00:24

+0

我逃脫了雙引號,因爲我動態創建了C#代碼中的HTML – Dadou 2010-10-29 13:18:28

回答

7
$('input').bind('keypress',function (event){ 
    if (event.keyCode === 13){ 
    $(this).trigger('click'); 
    } 
}); 

有了這個,你可以專注於一些這方面的投入同樣的事件綁定到所有輸入(可以篩選更多,如果你想),當有人點擊「進入」時,它會觸發「click」事件。

+0

謝謝,我會試試 – Dadou 2010-10-29 14:27:11

+0

我試過了,它的效果很好。 THanks – Dadou 2010-10-29 18:42:47

+1

這很好,但我需要一個'event.preventDefault()'內部的if循環,以使頁面不刷新。 – xbakesx 2013-03-28 01:50:01

0

連接的事件處理程序容器(表)。然後你可以得到key被實際按下的元素(在prototype.js中,使用Event.findElement,但是我相信其他庫有類似的方法),並且使得很多邏輯取決於按下的鍵和鍵。

+0

謝謝,我是gongi試圖使用你的方法。 – Dadou 2010-10-29 13:15:56

+0

對不起,沒有回答過,我昨天不得不出門。我不確定你的意思是「附加事件處理程序到表」? THanks – Dadou 2010-10-29 15:21:39

0

難道你不能只包含一個form元素,其中你定義了你的input?這樣,當用戶按下在其中一個輸入字段中輸入時,瀏覽器將默認提交表單。

如果您想自己處理搜索(例如,使用AJAX),則可以捕獲表單的submit事件並執行所需的操作。這樣做,如果JavaScript不可用這種或那種方式,表單仍然可以工作。

+0

我試過這種方法,但我無法添加表單,因爲疊加層已經在表單中。 – Dadou 2010-10-29 13:15:15

+0

@user:但是你不能在當前表單中添加一個'onsubmit'處理程序嗎? – 2010-10-29 15:18:16

+0

當前窗體已經提交了「主」頁面,但我想要處理疊加的輸入鍵。 「主」有幾個覆蓋,所以我必須知道哪一個是顯示,這將是相當複雜的(我認爲)。 – Dadou 2010-10-29 15:25:41