自动对焦输入以某种方式捕捉到按键
Autofocus input somehow catching a keypress?
我正在为我的MVC web应用程序实现几个快捷键,但我遇到了一个问题。该应用程序允许用户回答多项选择或简短回答的问题,我想只需按1、2、3、4等键就可以回答多项选择的问题
$(document).on("keypress", function (e) {
self.someKeyPressed(e);
});
[...]
someKeyPressed: function(e) {
// locate all the multiple choice buttons in this view
var buttons = this.$el.find('button');
if(_.contains(_.range(49,55), e.which) && buttons.length) {
index = e.which - 49;
var answer = $(buttons[index]).text();
this.answerQuestion(answer);
}
e.stopPropagation();
},
这很好,除了选择题后面紧接着是一个简短的回答题的情况。在这种情况下,用于包含元素的相同<div>
被替换为:
<input placeholder="answerswer goes here" autofocus="autofocus">
问题就在这里:无论我在键盘上用什么快捷方式来回答多选题,都会显示在中,就好像用户已经输入了一样,尽管在按键时该视图并不存在。我试着在"输入键"上连接一个事件,但在这种情况下甚至不会发生。有趣的是,取消自动对焦可以解决这个问题,但不幸的是,为了让用户体验愉快,我需要它。
这是怎么回事?在我准备好之前,我能做些什么来防止按键进入输入吗?
编辑:看起来就像是在e.stopPropagation()
完成任务之后添加e.preventDefault()
。如果没有它,jquery事件调度程序逻辑一完成,快捷方式编号就会被键入到输入中,但不会很快。
看起来调用e.preventDefault()
就可以了,尽管我仍然希望有一天能找出为什么这会有所不同。
相关文章:
- 通过javascript以编程方式将文件插入HTML输入
- 简单的Javascript方式,在输入字段的每5位数字后添加一个空格
- 如何使文本、数字和日期html输入字段以一致的方式支持Ctrl+Z(撤消)
- 当以编程方式更改输入值时,不会执行更改时事件
- 捕获所有关键输入,直到以响应式编程方式按下 ENTER
- 如何在使用 UIWebView 编辑 HTML 内容时正确调整输入语言更改 (LTR/RTL) 的文本对齐方式
- Javascript - 以编程方式执行所有函数输入的方法
- 鼠标输入鼠标离开没有按照我认为应该的方式工作
- 离子/角度日期输入使用时刻以编程方式设置
- 自动对焦输入以某种方式捕捉到按键
- 以编程方式将项添加到输入中
- 如何制作一个JavaScript函数,处理多组输入,以同样的方式进行数学处理
- 如何在Angular2中以编程方式进行脏输入或触摸输入
- 应用脚本的绑定方式因输入源而异
- 我如何在 jQuery 中以编程方式设置输入文本框的值
- 如何在没有 jQuery 的情况下以编程方式触发“输入”事件
- 以编程方式启动输入的更改事件
- 在javascript中以编程方式向输入字段添加onclick事件不起作用
- HTML表格单元格以更好的方式显示输入框中输入的文本
- JavaScript,我无法通过这种方式获得输入的值