我正在尝试查看用户是否在文本框中按了小数点分隔符,并根据其他参数允许或禁止它.
NumberdecimalSeparator返回46或'.' 在我的美国系统上.许多其他国家使用','作为分隔符.当我按下句点时,KeyDown事件将KeyValue设置为190.
我只是继续寻找逗号/句号,还是有更好的方法?
我有一个div,谁的contenteditable属性已设置为true.我如何让孩子们回应键盘事件?似乎唯一的方法是捕获父div中的事件并通过选择apis找出孩子.有没有更好的办法?更具体地说,我可以将键盘事件处理程序附加到子元素吗?我错过了什么吗?
附件是说明问题的示例代码.希望代码内的注释充分解释.
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<div id="editable" contentEditable='true' style='height: 130px; width: 400px; border-style:solid; border-width:1px'>
<span id="span1" onkeypress="alert('span1 keypress')">test text 1</span> <!-- does not work -->
<span id="span2" > test text2</span>
<span id="span3" onclick="alert('span3 clicked')">test text 3</span> <!-- this works fine -->
</div>
<!-- Uncomment this to set a keypress handler for span2 programatically. still doesnt work -->
<!--
<script type="text/javascript">
var span2 = document.getElementById('span2');
span2.onkeypress=function() {alert('keypressed on ='+this.id)};
</script>
-->
<!-- Uncomment this to enable keyboard events for …Run Code Online (Sandbox Code Playgroud) 我使用keydown事件将一些键盘快捷键绑定到文档对象(我使用jquery.hotkeys插件来执行此操作,但我怀疑这很重要).
然后我有一个iframe,我动态插入到DOM中,并在一些操作后删除它.我的问题是,在删除iframe后,我需要单击父文档以便能够使用键盘快捷键,否则不会检测到keydown事件.
我已经尝试在文档元素上以及父页面上的其他元素上使用.focus(),. click(),. mousedown()等,但我无法将焦点返回到父页面.
如何在不要求用户点击页面的情况下将焦点重新放回页面?谢谢!!
我在为表单上的所有控件设置相同的事件处理程序时遇到问题.我想在我的应用程序中统一处理按下的f5-f7按钮,所以我尝试为表单上的所有控件注册相同的事件处理程序.我插了
foreach (System.Windows.Forms.Control cont in this.Controls)
cont.KeyDown += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyPress);
Run Code Online (Sandbox Code Playgroud)
在InitializeComponent()函数中,就在自动生成ResumeLayout/PerformLayout调用之前.不要介意名称MainForm_KeyPress,它现在实际上是一个KeyDown事件处理程序.
我还尝试在我的init()函数中插入代码,该函数从构造函数中调用.但结果是一样的:按键时不会发生事件.专注于表单的一个按钮.
但是如果我使用设计工具(将函数名称复制到KeyPress事件字段)为其中一个按钮实现处理程序,则如果按钮处于焦点,则事件会正确引发.
任何想法为什么foreach不起作用?
我已经工作了好几天来解决iOS的限制,它不允许自动关注Ipad上的文本字段.这里的问题很好地解释了移动Safari自动对焦文本字段.
我的目标是能够直接在屏幕上通过蓝牙扫描仪扫描条形码而无需用户交互.
我设法通过简单的方式设置AutoFocus,我已经在iOS v6上测试过了
$('#MyTextField').trigger('focus');
Run Code Online (Sandbox Code Playgroud)
document.activeElement返回我的文本字段,因为文本字段没有CURSOR.是正常的吗?
我认为因为光标没有显示在文本框上,键盘没有显示,并且因为没有显示键盘,所以当我使用扫描仪时,按键事件不会触发!
我用fabric.js创建简单的工具,我需要添加功能,用键盘移动对象.我被卡住.目前我登录到控制台键盘事件,所以我知道它的工作原理.但我不知道如何将这种功能添加到我的画布图像.并帮助?
$(function(){
var canvas = new fabric.Canvas('imageCanvas', {
backgroundColor: 'rgba(255, 255, 255, 0)'
});
var imageLoader = document.getElementById('imageLoader');
imageLoader.addEventListener('change', handleImage, false);
function handleImage(e) {
var reader = new FileReader();
reader.onload = function (event) {
var img = new Image();
img.onload = function () {
var imgInstance = new fabric.Image(img, {
})
canvas.add(imgInstance);
}
img.src = event.target.result;
}
reader.readAsDataURL(e.target.files[0]);
}
canvas.on('mouse:down', function(options) {
console.log(options.e.clientX, options.e.clientY);
});
var canvasWrapper = document.getElementById('canvasWrapper');
canvasWrapper.tabIndex = 1000;
canvasWrapper.addEventListener("keydown", doKeyDown, false);
function doKeyDown(e) {
document.onkeydown = …Run Code Online (Sandbox Code Playgroud) 在我们的iOS 8应用程序中,搜索屏幕与App Store应用程序的搜索屏幕类似,不再可靠.当用户轻敲键时,键盘有时会关闭甚至执行操作.
部分原因是tap事件被传递到较低层,即关闭键盘(烟雾屏幕),导航到搜索结果(带搜索结果的UITableView)或执行搜索(带搜索术语建议的UITableView).
由于某些未知原因,只要用户留在应用程序中,它就能正常工作.但是,如果他/她转到另一个应用程序然后返回,则会传递事件.此行为会影响所有iOS 8版本(8.0.x,8.1).
我们如何防止键盘传递点击事件或我们如何检测这样的事件(例如来自tableView:didSelectRowAtIndexPath:)?
使用IOS 8编辑时 " 键盘间歇性消失 "的问题似乎引用了同样的问题,虽然我无法弄清楚如何将这种丑陋的黑客应用于我的情况.
我刚刚在Apple的开发者论坛上找到了类似的帖子.不幸的是,它没有答案,并在同一时间存档:
我在视图层次结构上的视图上覆盖-hitTest:withEvent:我检查它是否被触摸并将触摸转发到其子视图并触发选择器以关闭键盘.
在iOS 7上(更奇怪的是,当应用程序在iOS 8上启动时)这非常有效,并且-hitTest:withEvent:如果视图位于键盘后面且用户点击键盘,则永远不会调用它.
但是在iOS 8上,如果用户将应用程序发送到后台并将其带回前台,则点击键盘上的任何内容都会触发-hitTest:withEvent:就好像视图位于视图层次结构上的键盘上方一样.我已经使用Reveal.app验证它不在键盘上方,它按预期落后.
任何人都对可能发生的事情有任何想法?我已经创建了一个示例项目并将其附加到Apple的雷达上,因为这看起来像iOS 8上的一个错误,因为它不能以相同的方式一致地工作.
更新
我的搜索屏幕包含两个视图(彼此叠加):没有搜索结果时可见的背景视图,如果搜索结果可用,则可以看到表格视图.除此之外,如果搜索栏变为活动状态,我会动态添加两个额外的视图:可以点击以结束搜索文本条目的烟雾类视图和显示搜索文本建议的表视图.所有四个视图都直接包含在视图控制器的主视图中,并覆盖整个区域.
现在有趣的是,键盘转发事件是两个动态添加的视图,但不是两个始终存在的低视图.
我一直在尝试(从事件处理程序中)确定哪个键盘触发了该事件。我一直在使用这两篇文章:
在第二篇文章中,作者使用Carbon技术成功地分离了键盘,但是使用Cocoa尝试相同的技巧失败了。
在我自己的系统上,两者都失败了,可能是因为我的无线键盘也是苹果制造的,所以可能报告的标识符与内置键盘相同。
在第一篇文章中,有人提出了一种解决方案,该方案在较低级别(可以区分键盘)上监视键盘事件,并将此数据存储在队列中,然后让事件处理程序检索信息。
这看起来有些毛茸茸,所以我只是在这里检查是否有人发现了更好的东西。
这是我的代码,展示了在事件处理程序中区分键盘的失败:
// compile and run from the commandline with:
// clang -fobjc-arc -framework Cocoa -framework Carbon ./tap_k.m -o tap_k
// sudo ./tap_k
#import <Foundation/Foundation.h>
#import <AppKit/NSEvent.h>
//#import <CarbonEventsCore.h>
#include <Carbon/Carbon.h>
typedef CFMachPortRef EventTap;
// - - - - - - - - - - - - - - - - - - - - -
@interface KeyChanger : NSObject
{
@private
EventTap _eventTap;
CFRunLoopSourceRef _runLoopSource;
CGEventRef _lastEvent;
}
@end
// - - - …Run Code Online (Sandbox Code Playgroud) 我还没有在Android上测试过这个,但在iOS上,我肯定知道它不起作用.
我有一个输入字段,人们可以写东西.当有人在本机iOS键盘上点击"输入"时,我想取消选择(删除焦点)输入字段...但它不起作用.它只是让它专注于输入字段,而我想摆脱对输入字段的关注.
我正在使用Angular/HTML/Ionic /纯JavaScript.我有很多输入字段,所以使用类名.有没有办法实现这个目标?
你可以看到这里的输入字段和下面的键盘.
我正在创建一个宏程序来记录和播放鼠标和键盘输入.录制工作正常,鼠标播放也是如此,但我在播放键盘输入时遇到了麻烦 - 特别是在释放前按住键几秒钟.这不等于重复按键.这是我尝试过的:
技巧1:Me.KeyDown
Private Sub keyboard_pressed() Handles Me.KeyDown
Dim keypress = e.KeyData
MsgBox(keypress)
End Sub
Run Code Online (Sandbox Code Playgroud)
仅在窗口处于焦点时才起作用.
技术2:SendKeys
Private Sub timer_keyboardplayback_Tick() Handles timer_playback.Tick
SendKeys.Send("{LEFT}")
timer_playback.Interval = 30
End Sub
Run Code Online (Sandbox Code Playgroud)
工作失焦,但重复按左箭头而不是按住箭头
技巧3:keybd_event
Public Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Sub timer_keyboardplayback_Tick() Handles timer_playback.Tick
Const keydown = &H1
Const keyup = &H2
Dim VK_LEFT = 37
keybd_event(VK_LEFT, 0, keydown, 0) …Run Code Online (Sandbox Code Playgroud)