2009-01-30 85 views
4

我有一個ASP.NET頁面,它有一個窗體。它也有一個搜索表單。搜索位於頁面的右上角,因此搜索按鈕是第一個添加到控件層次結構中的按鈕。jQuery和ASP.NET - 強制按鈕單擊

當您在處理其他表格並按下回車鍵時,它會點擊搜索按鈕。我不希望這樣,我更喜歡當你按下輸入表單的按鈕時單擊。

我試圖使用jQuery這樣的:

$('#textBoxId').keyup(function(e) { 
    if(e.keyCode === 13) { 
    $('#buttonId').click(); 
    e.preventDefault(); 
    } 
}); 

但表單提交,這意味着客戶端驗證沒有運行(即onclick事件處理程序沒有按鈕運行)。

達到此目的的最佳方法是什麼?

回答

8

試試這個。

$('#textBoxId').keydown(function(e) { 
    if(e.keyCode === 13) { 
    e.preventDefault(); 
    $('#buttonId').trigger('click'); 
    } 
}); 
+0

觸發器很甜,謝謝 – 2009-01-30 05:19:26

1

此代碼在IE和FF:

$('#textBoxId').keydown(function(event) { 
    var e = event || window.event; 
    var keyCode = document.all ? e.keyCode : e.which; 

    if (keyCode == 13) { 
     e.preventDefault(); 
     $('#buttonId')[0].click(); 
    } 
}); 

要記住的重要一點是,jQuery的調用click()只要求綁定到單擊事件的所有處理。它不調用底層html對象的click()方法。這必須通過按照if語句中的最後一行從jQuery數組中提取元素來手動完成。