javascript - 即使在 JavaScript 中设置焦点后,Tab 事件也会更改焦点

标签 javascript jquery html

我有两个输入元素,一个是文本框,下一个是 HTML 页面中并排的下拉列表(ddl)。用户应该输入一个大于 5 的值(这只是一个示例),然后从 ddl 中选择一个项目。

我编写了一个验证,每当文本框中发生更改时就会发生验证。如果该值不大于 5,则通知用户该值应大于 5,并将焦点设置到文本框。 (我正在使用 Jquery)

$(".textBox").change( function(){
  alert("Quantity should be greater than 5");
  $(this).val("");
  $(this).focus();  
}

现在问题来了,

案例1: 当用户输入低于 5 的值并按 Tab 键时,逻辑上焦点应该在警报后返回到文本框,但焦点似乎已移至下拉列表。

案例2: 当用户输入低于 5 的值并单击下拉列表时,会出现一条警报消息,但焦点不是在文本框中,而是下拉列表已展开。

我想知道为什么会发生这种情况以及如何修复它,以便如果该值小于 5,则焦点应该位于文本框上。

感谢任何帮助。 新泽西州

最佳答案

您可以通过添加以下代码来阻止按 Tab 键的默认行为

$("#txtBox").keydown(function(event){
  if($("#txtBox").val()<5)
    {
    if (event.keyCode == 9) 
    event.preventDefault();

    }
})

关于javascript - 即使在 JavaScript 中设置焦点后,Tab 事件也会更改焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25085602/

相关文章:

javascript - 似乎无法使选择器选择正确

javascript - 网格中的更新值未显示在 java spring Controller 中

javascript - 您能告诉我为什么这个 ajax 调用没有到达网络服务吗?

javascript - 更改数组对象属性然后保存回本地存储?

html - 为属于 span 标签的不同类设置样式

javascript - 值的自动求和/代码循环

javascript - 如何在传单js中添加侧边栏覆盖?

javascript - 视频播放时间不显示

javascript - 有没有办法在箭头函数声明后立即调用它?

javascript - 如何在页面的中间部分加载页面