我想模擬Google搜索效果,即使搜索框未聚焦,用戶也可以開始輸入,輸入框將捕獲所有鍵盤筆劃。模擬「ontype」事件
我已經找過ontype
事件,但還沒有找到任何東西。我知道click
等事件的回調中的event
對象具有鍵盤信息,但我不認爲這是我所追求的。
我想模擬Google搜索效果,即使搜索框未聚焦,用戶也可以開始輸入,輸入框將捕獲所有鍵盤筆劃。模擬「ontype」事件
我已經找過ontype
事件,但還沒有找到任何東西。我知道click
等事件的回調中的event
對象具有鍵盤信息,但我不認爲這是我所追求的。
這做工作:
$(document).on('keydown', function() {
$('input').focus();
});
是的,這是可行的,但由於您的輸入是'document'的一部分,每次您在輸入字段中輸入內容時,此函數也會運行並將焦點輸入到已具有焦點的輸入。還有一種更優雅的方式。我會更加強化我的答案。 –
您之後的事件是onkeypress。
HTML:
<input type="text" id="txtSearch" />
的Javascript:
var googleLikeKeyCapture = {
inputField : null,
documentKeydown: function(event) {
var inputField = googleLikeKeyCapture.inputField;
if(event.target != inputField.get(0)) {
event.target = inputField.get(0);
inputField.focus();
}
},
init: function() {
googleLikeKeyCapture.inputField = $('#txtSearch');
$(document).bind('keydown', googleLikeKeyCapture.documentKeydown);
googleLikeKeyCapture.inputField
.focus(function() {
$(document).unbind('keydown');
})
.blur(function() {
$(document).bind('keydown', googleLikeKeyCapture.documentKeydown);
});
googleLikeKeyCapture.init = function() {};
}
};
$(googleLikeKeyCapture.init);
您也可以找到的jsfiddle例如here
編輯:
而現在它是一個jQuery plugin。 :)如果keydown發生在textarea或輸入字段中,它不會捕獲鍵,否則其他任何內容都會轉到指定的輸入字段。如果您的選擇器匹配多個元素,則它只使用第一個元素。
用法:$('#txtSearch').captureKeys();
什麼是行'googleLikeKeyCapture.init = function(){};'for?爲了避免內存泄漏? – Randomblue
這是一種習慣。它可以防止多次初始化對象。 –
試試這個jQuery的文字更改事件插件:
http://www.zurb.com/playground/jquery-text-change-custom-event
怎麼樣'onkeypress'或'onkeyup' – Rafay
文件.onkeypress – marko
更新了我的答案。顯然沒有必要捕捉角色,改變目標會發揮魔力。 –