问题标签 [keypress]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1656 浏览

javascript - 按键上下文的 JavaScript 检测(表单历史选择与表单提交)

我正在使用 jQuery 编写一个半通用表单插件,以加快我正在从事的项目的开发。

计划是jTemplates模板包含字段,我的插件通过模板查找任何所需的多语言资源,从服务器请求它们,然后将所有内容打包成一个 JavaScript 对象,然后传递给自定义函数“提交”。

一切都运行良好,除了在伪造表单时需要执行的标准“当按下输入时,提交表单”代码:

问题是在 Firefox 中(至少;我还没有检查过其他浏览器),如果您之前在类似名称的文本框中输入了信息,您将获得表单历史记录。如果您随后通过按 Enter 选择这些建议值之一,它会提交表单。如果您在页面上的第一个输入上,那就不好了。实际上,真的很烦人。

显而易见的解决方案似乎是在字段周围插入一个表单元素,并停止通过 jQuery 提交任何可能的虚拟表单。幸运的是,当我在 ASP.NET MVC 中时,我有幸这样做,但如果我没有这样做呢?如果我的插件不知道它是否已经在一个表单中,所以必须保持自己的状态怎么办?如果我在标准的 WebForms ASP.NET 中并且必须手动将每个输入的返回键“定位”到正确的提交按钮怎么办?

有没有办法,也许通过事件对象本身,来检测按键的上下文,所以我可以过滤掉表单历史项目的选择?

0 投票
3 回答
1734 浏览

html - 为什么 contentEditable 元素拒绝 Enter 键?

我正在使用嵌入 IE 控件来显示内容的应用程序。我将该内容更改为包含一个<div contentEditable="True">Hello World</div>元素。这很好用,我可以编辑这个 div 的内容,但是按 Enter 会被拒绝并发出哔声。

当我向该页面添加 textarea 元素时,Enter 键起作用,我可以添加行,但不能在 contentEditable 元素中添加。

当我将事件附加到该元素时,我看到按下 Enter 键会触发 keyDown 事件,但不会触发 keyPress。

任何人都知道可能导致它的原因吗?

谢谢,
刺客

0 投票
2 回答
3023 浏览

c# - Acting only on text input in a KeyPress Event

I have a key press event, and I want the combobox to handle the keypress if the input is not textual. I.E. If it is the up or down key, let the combobox handle it like it normally would, but if it's punctuation, or alphanumeric I want to act on it.

I thought Char.IsControl(e.KeyChar)) would do the trick, but it doesn't catch the arrow keys, and for a combobox, that's important.

0 投票
3 回答
13409 浏览

java - 模拟在 Java 中按住的键

我希望在 Java 中模拟短时间按住键盘键的动作。我希望下面的代码按住 A 键 5 秒钟,但它只按下一次(在记事本中测试时会产生一个“a”)。知道我是否需要使用其他东西,或者我只是在这里使用了错误的 awt.Robot 类吗?

0 投票
5 回答
22451 浏览

c# - 在用户按键上搜索 datagridview

我正在尝试选择单元格值以用户按下的相同 keychar 开头的第一行。这就是给我带来麻烦的部分。

这是我处理事件的方式(使用工作解决方案更新):

我敢肯定,我忽略了一些简单的事情,但是对于我的生活,我无法弄清楚它是什么。

编辑

更新了代码并应用了解决方案

0 投票
2 回答
4000 浏览

keypress - 在未激活的应用程序中模拟鼠标移动/单击/按键

我知道如何模拟鼠标和键盘事件,但它们的行为就像用户做了它们一样,所以它们会影响活动的窗口。我需要的是模拟其中一个输入,但在一个不活动的窗口中。

我并不是说它被最小化了,例如,想象一下,你有 msPaint 和记事本。记事本在油漆前面。并且您想在绘图窗口的某些坐标中模拟鼠标单击,但不将其设置为活动状态,从而使用户可以继续使用位于绘图前的记事本。

这可能吗?谢谢!

0 投票
4 回答
2916 浏览

c# - 在未激活的应用程序中模拟鼠标移动/单击/按键

我知道如何模拟鼠标和键盘事件,但它们的行为就像用户做了它们一样,所以它们会影响活动的窗口。我需要的是模拟其中一个输入,但在一个不活动的窗口中。

我并不是说它被最小化了,例如,想象一下,你有 msPaint 和记事本。记事本在油漆前面。并且您想在绘图窗口的某些坐标中模拟鼠标单击,但不将其设置为活动状态,从而使用户可以继续使用位于绘图前的记事本。

这可能吗?谢谢!

我试过这个:

但它不起作用 =( 什么都不做 :(

0 投票
5 回答
43465 浏览

c# - 我不明白如何使用 SendMessage 或 PostMessage 调用

我需要在第三方应用程序中模拟按键。假设我有一个需要向计算器应用程序发送“8”的 C# 应用程序。我不能使用 .Net 的 SendKeys 或 win32 api 的 keybd_event ,因为它们都要求窗口是最活跃的窗口,而我的情况并非如此。

这样就剩下调用 sendMessage 和 postMessage 了。在过去的三个小时里,我一直在尝试获得一些结果,但现在我完全没有希望了。

我有以下内容:

如您所见,我进行了四次尝试与计算器进行通信。使用 sendMessage 和 PostMessage 关闭窗口并发送密钥 7. 没有任何效果。FindWindow 方法有效,因为我得到了应用程序的处理程序(我什至尝试自己启动进程并使用 process.MainWindowHandler 访问它,但没有运气)。没有错误或异常,但它在计算器中没有任何作用。

我也用记事本尝试了完全相同的东西,也没有任何改变。

0 投票
1 回答
180 浏览

windows - 用于报告按键的 Windows 程序

问题:我在虚拟机和时髦的键盘设置中使用 Windows 作为客户操作系统。我需要一种方法来解决键盘热键组合无法正常工作的情况。

问题:有没有人知道当我在已安装的键盘上按下某个键或组合键时,它可以快速轻松地在屏幕上显示按键窗口所认为的内容?

0 投票
2 回答
1174 浏览

windows - 如何获取应用程序的活动子窗口?

我有这个问题。我有一个特定应用程序主窗口的处理程序,我想模拟该应用程序上的按键...

我正在使用 sendMessage/postMessage api 调用来执行此操作。我不使用 .Net SendKeys 函数或 win32 api 的 keybd_event 的原因是它们在全局级别模拟按键。就我而言,我可能已将应用程序最小化,但仍希望模拟按键。

sendMessage 和 postMessage 的问题在于,您必须传递要按下键的确切子窗口的处理程序。例如,在记事本中,如果我将密钥发送到主窗口,没有任何反应,我必须将密钥发送到基本上由白色画布组成的子窗口,您可以在其中进行书写。

以 msPaint 为例,如果用户创建一个新文档,并在该绘图中打开一个文本框,并且我想在那里模拟按键,我必须获取主窗口的子窗口的子窗口才能使其工作。

所以我找到了一种似乎适用于所有情况的方法,基本上,我使用带有参数 GW_CHILD 的 getWindow 来获取具有最高 z 值的子窗口。然后我为子窗口再次执行此操作并继续执行此操作,直到某个 childWindow 没有更多 childWindows..

它似乎奏效了,我很高兴!

但是......我发现这不起作用的情况。火狐就是其中之一。Firefox 有 mainWindow,然后有一个与 mainWindow 几乎相同的 childWindow,然后它还有另一个 childWindow,即网站区域,即地址栏和菜单下方的区域。例如,如果我在 www.google.com 上,并且我想在焦点搜索框中模拟按键,它会起作用,因为获取子窗口的子窗口会给我正确的 childWindow。但是,例如,如果用户单击地址栏,getWindow 的工作方式不会发生任何变化。它最终仍然会得到地址栏下的子窗口,什么都不做,而不是模拟地址栏上的按键。

问题是我还没有找到获取某个应用程序的活动子窗口的方法。我只能使用GetWindow方法来获取某个窗口的子窗口,直到找到没有子窗口的子窗口。但是,正如您在 firefox 案例中看到的那样,活动窗口实际上是我最终得到的子窗口的父级。

我尝试过其他 api 调用,如 getTopWindow 但我没有运气..

任何人都可以对这个问题有所了解吗?谢谢!