Javascript 只关注输入和按钮
是否可以只允许关注某些元素,例如输入和按钮?例如,如果用户专注于某个输入字段,并在页面上的其他位置单击“关闭”,则该输入将保持焦点。但如果用户单击另一个输入或按钮,新元素就会获得焦点 我试图通过Javascript 只关注输入和按钮,javascript,jquery,Javascript,Jquery,是否可以只允许关注某些元素,例如输入和按钮?例如,如果用户专注于某个输入字段,并在页面上的其他位置单击“关闭”,则该输入将保持焦点。但如果用户单击另一个输入或按钮,新元素就会获得焦点 我试图通过event.stopPropagation()实现这一点
event.stopPropagation()实现这一点但是,这些元素似乎仍然失去了焦点
我当前的尝试如下所示:
$(document).on("click", function (event) {
if (event.target.tagName !== 'BUTTON' || event.target.tagName !== 'INPUT') {
event.stopPropagation();
event.preventDefault();
}
});
有什么建议吗?您可以使用一个全局变量来缓存最后一个元素,在单击另一个元素而不是input
或按钮
后,可以将其重置为焦点:
var $focus_el;
$(document).on("click", function (event) {
var $this = $(event.target);
if(!$this.is("input") && !$this.is("button")){
$focus_el.focus();
}
});
$('input, button').on('focus', function(){
$focus_el = $(this);
});
参考
您可以使用全局变量缓存最后一个元素,在单击另一个元素而不是input
或按钮后,可以将焦点重置为该元素:
var $focus_el;
$(document).on("click", function (event) {
var $this = $(event.target);
if(!$this.is("input") && !$this.is("button")){
$focus_el.focus();
}
});
$('input, button').on('focus', function(){
$focus_el = $(this);
});
参考
您可以使用全局变量缓存最后一个元素,在单击另一个元素而不是input
或按钮后,可以将焦点重置为该元素:
var $focus_el;
$(document).on("click", function (event) {
var $this = $(event.target);
if(!$this.is("input") && !$this.is("button")){
$focus_el.focus();
}
});
$('input, button').on('focus', function(){
$focus_el = $(this);
});
参考
您可以使用全局变量缓存最后一个元素,在单击另一个元素而不是input
或按钮后,可以将焦点重置为该元素:
var $focus_el;
$(document).on("click", function (event) {
var $this = $(event.target);
if(!$this.is("input") && !$this.is("button")){
$focus_el.focus();
}
});
$('input, button').on('focus', function(){
$focus_el = $(this);
});
参考
您无法停止焦点丢失,您可以做的只是通过编程将焦点放回原处
var last_focus_element;
$(document).on("click", function (event) {
if (event.target.tagName !== 'BUTTON' && event.target.tagName !== 'INPUT') {
$(last_focus_element).focus();
}
});
$('input,button').on('blur', function() {
last_focus_element = this;
});
您无法阻止焦点丢失,您所能做的只是通过编程将焦点放回原处
var last_focus_element;
$(document).on("click", function (event) {
if (event.target.tagName !== 'BUTTON' && event.target.tagName !== 'INPUT') {
$(last_focus_element).focus();
}
});
$('input,button').on('blur', function() {
last_focus_element = this;
});
您无法阻止焦点丢失,您所能做的只是通过编程将焦点放回原处
var last_focus_element;
$(document).on("click", function (event) {
if (event.target.tagName !== 'BUTTON' && event.target.tagName !== 'INPUT') {
$(last_focus_element).focus();
}
});
$('input,button').on('blur', function() {
last_focus_element = this;
});
您无法阻止焦点丢失,您所能做的只是通过编程将焦点放回原处
var last_focus_element;
$(document).on("click", function (event) {
if (event.target.tagName !== 'BUTTON' && event.target.tagName !== 'INPUT') {
$(last_focus_element).focus();
}
});
$('input,button').on('blur', function() {
last_focus_element = this;
});
它们没有错,两者都会起作用,区别在于他使用的是位方式。@M.Doye实际上这是更好的方法。它们是严格的比较运算符,即:也检查类型(布尔、字符串或整数)。它们没有错,两者都可以工作,区别在于他使用的是按位操作。@M.Doye实际上这是更好的方法。它们是严格的比较运算符,即:也检查类型(布尔、字符串或整数)。它们没有错,两者都可以工作,区别在于他使用的是按位操作。@M.Doye实际上这是更好的方法。它们是严格的比较运算符,即:也检查类型(布尔、字符串或整数)。它们没有错,两者都可以工作,区别在于他使用的是按位操作。@M.Doye实际上这是更好的方法。它们是严格的比较运算符,即:也检查类型(布尔、字符串或整数)啊,好的。我知道这是一个选择,但我认为可能有更好的办法。啊,好的。我知道这是一个选择,但我认为可能有更好的办法。啊,好的。我知道这是一个选择,但我认为可能有更好的办法。啊,好的。我知道这是一个选择,但我认为可能有更好的办法。啊,好的。我知道这是一个选择,但我认为可能有更好的办法。啊,好的。我知道这是一个选择,但我认为可能有更好的办法。啊,好的。我知道这是一个选择,但我认为可能有更好的办法。啊,好的。我知道这是一个选择,但我认为可能有更好的办法。