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实际上这是更好的方法。它们是严格的比较运算符,即:也检查类型(布尔、字符串或整数)啊,好的。我知道这是一个选择,但我认为可能有更好的办法。啊,好的。我知道这是一个选择,但我认为可能有更好的办法。啊,好的。我知道这是一个选择,但我认为可能有更好的办法。啊,好的。我知道这是一个选择,但我认为可能有更好的办法。啊,好的。我知道这是一个选择,但我认为可能有更好的办法。啊,好的。我知道这是一个选择,但我认为可能有更好的办法。啊,好的。我知道这是一个选择,但我认为可能有更好的办法。啊,好的。我知道这是一个选择,但我认为可能有更好的办法。