模拟“ontype”事件

发布于 2024-12-11 21:30:54 字数 175 浏览 0 评论 0原文

我想模拟Google搜索效果,即使搜索框没有聚焦,用户也可以开始打字,输入框将捕获所有键盘笔画。

我寻找了 ontype 事件,但没有找到任何东西。我知道 click 等事件的回调中的 event 对象具有键盘信息,但我不认为这就是我想要的。

I want to simulate the Google Search effect that even with the search box not focused, the user can start typing and the input box will capture all keyboard strokes.

I have looked for an ontype event, but haven't found anything. I know that the event object in callbacks for events like click has keyboard information, but I don't think this is what I'm after.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

不疑不惑不回忆 2024-12-18 21:30:54

这完成了工作:

 $(document).on('keydown', function() {
     $('input').focus();
 });

This does the job:

 $(document).on('keydown', function() {
     $('input').focus();
 });
Hello爱情风 2024-12-18 21:30:54

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 示例现在它是一个 jQuery 插件。 :) 如果 keydown 发生在文本区域或输入字段中,它不会捕获按键,其他任何内容都会进入指定的输入字段。如果您的选择器匹配多个元素,它将仅使用第一个元素。

用法:$('#txtSearch').captureKeys();

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);

Also you can find jsFiddle example here

EDIT :

And now it's a jQuery plugin. :) If keydown occures in a textarea or input field it doesn't capture keys, anything else goes to designated input field. If your selector matches more than one element it only uses the first element.

Usage: $('#txtSearch').captureKeys();

情绪少女 2024-12-18 21:30:54

您要处理的事件是 onkeypress

The event you are after is onkeypress.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文