【问题标题】:jquery focus not triggered for second timejquery焦点没有第二次触发
【发布时间】:2015-08-22 10:42:25
【问题描述】:

我有一个输入字段,所以当我单击任何输入字段时,它都会获得焦点。 当我在外面点击时,它会聚焦。

 <input type="text" id="english" name="english"/>

input:active,input:focus{
    border: 2px solid red;
}

$(document).ready(function() {
        if (!($("input").is(":focus"))) {
            alert('not focused');
        }
    }); 

JSFIDDLE

如果输入元素没有获得焦点,则第一次调用此警报。 每当我在输入元素外部单击时,我都需要一直调用它。

更新:第二个问题

我在 iframe 中有一个输入字段,因此当我单击任何输入字段时,它都会获得焦点。但是,如果我再次单击外部(身体区域),则 iphone 键盘不会关闭。 iframe 中只有 iphone 和 ipad 的问题。 这适用于所有浏览器。所以,如果没有焦点,我尝试了,称为 blur()document.activeelement。但他们都没有工作。

输入元素没有聚焦时如何关闭ipad/iphone键盘?

【问题讨论】:

  • 你没有附加任何事件。您的代码只是检查输入是否集中在 document.ready 上。将 en 事件附加到输入字段,以便每次取消焦点时都会检查。

标签: javascript jquery html css iframe


【解决方案1】:

你没有监听任何事件,它不会继续检查。您需要添加一个事件侦听器来侦听任何输入上的模糊事件。

【讨论】:

  • 你能帮我举个例子吗?主要是如果输入不集中,我需要用 JS 关闭 iphone/ipad 键盘
【解决方案2】:

epascarello 说的是正确的。 ready 函数中的 if 语句仅在 DOM 加载完成时触发一次。

由于您使用的是 jQuery,所以做您想做的事真的很容易。

<input type="text" id="english" name="english"/>

input:active,input:focus{
    border: 2px solid red;
}

然后是你的 JavaScript 代码:

$( "input" ).focusout(function() {
    alert('not focused');
});

第二个问题我没法帮你。

【讨论】:

  • 不要惊慌失措!测试时使用 console.log
  • 一般情况下我会同意你的观点,但 OP 正在 JSFiddle 中对此进行测试,其中控制台输出不会立即可见,因此代码是否正常工作并不是很明显。使用 alert() 可以清楚地表明它确实在工作。此外,在这种情况下,我尝试将他的部分 JS 代码保留在原处,以便他确切地看到要获得他必须触发的警报需要什么。
  • 控制台在 jsfiddle 中可见,并且 onblur 警报会创建一个循环
  • 这不是一直在调用吗?我需要在事件处理程序中调用
  • 我不确定我是否理解您的要求。上面的代码是 jQuery 语法,用于将事件处理程序绑定到页面上任何输入字段上的 focusout 事件。带有 alert() 函数的行是事件触发时调用的内容(输入字段失去焦点)。
猜你喜欢
  • 1970-01-01
  • 2021-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多