6

我有一张图片,我使用键盘对其进行一些操作(翻译、缩放……)。在图像上方,我有一个输入文本框,显示数据集中图像的编号。当光标在文本框上时,如何禁用图像处理?(即禁用我分配给每个键盘的行为)。我还希望仍然能够编辑文本框(例如移动到图像编号 xx)。从我在这里读到的IPad Disable keyevent on input,我认为解决方案是这样的:

 // input text field
   var currentPosDisplay = $('<input type=text id="currentPos"  onkeypress="return  disableManipulation();" value="1" style="display:inline" >');

但我不知道如何实现 disableManipulation() 以便当我按下键盘(在文本框内)时,只会发生默认行为(而不是图像操作)

4

2 回答 2

7

听起来您想让用户更改 中的值input,但您不希望在文档(或其他容器)级别看到这些事件,因为您已将键盘事件挂钩以进行图像操作。

如果是这种情况,您可以这样做Event#stopPropagation

var currentPosDisplay = $('<input type=text id="currentPos" value="1" style="display:inline" >');
currentPosDisplay.on("keypress keydown keyup", function(e) {
    e.stopPropagation();
});
于 2013-09-06T14:28:10.920 回答
1

您可以检查输入元素是否具有焦点:如何找出哪个 DOM 元素具有焦点?

如果是这样,请不要应用您的图像处理。

从 onkeypress 处理程序返回 false 将忽略按下的键,但如果你有焦点,听起来你无论如何都不想要那个。

于 2013-09-06T14:27:29.493 回答