使用jQuery,我如何获得具有插入符号(光标)焦点的输入元素?
或者换句话说,如何确定输入是否具有插入符号的焦点?
.click如果textarea已经聚焦,我如何检测事件何时触发?
我有这个javascript:
$(".status").on("click","textarea",function(){
if ($(this) == "focused") {
// fire this step
}else{
$(this).focus();
// fire this step
}
Run Code Online (Sandbox Code Playgroud) 假设我有以下div在满足某个条件后获得焦点:
<div id="myID" tabindex="-1" >Some Text</div>
Run Code Online (Sandbox Code Playgroud)
我想创建一个处理程序,检查该div是否具有焦点,当它评估为true/focus在div上时,执行某些操作(在下面的示例中,打印控制台日志):
if (document.getElementById('#myID').hasFocus()) {
$(document).keydown(function(event) {
if (event.which === 40) {
console.log('keydown pressed')
}
});
}
Run Code Online (Sandbox Code Playgroud)
我在控制台中收到一条错误消息:
TypeError:无法读取null的属性'hasFocus'
知道我在这里做错了吗?也许我传递div Id的方式?
如何选择具有当前焦点的元素?
:focusjQuery中没有过滤器,这就是为什么我们可以使用这样的东西:
$('input:focus').someFunction();
Run Code Online (Sandbox Code Playgroud) 有什么我可以这样做(通过插件perhap)
if ( ! $('form#contact input]').hasFocus()) {
$('form#contact input:first]').focus();
}
Run Code Online (Sandbox Code Playgroud)
基本上,将焦点设置为第一个输入,但仅当用户尚未点击任何内容时?
我知道这也会奏效,但有什么更优雅的吗?
$(function() {
var focused = false;
$('form#contact input]').focus(function() {
focused = true;
});
setTimeout(function() {
if ( ! focused) {
$('form#contact input:first]').focus();
}
}, 500);
});
Run Code Online (Sandbox Code Playgroud) 有两个元素在起作用:
$('#myInput') // an input field for search
$('#myList') // a list to display search results
Run Code Online (Sandbox Code Playgroud)
我想在输入不再具有焦点时隐藏列表,如下所示:
$('#myInput').blur(function() {
$('#myList').hide();
});
Run Code Online (Sandbox Code Playgroud)
这很有效,除非单击列表项,因为blur事件会在注册单击之前触发并隐藏列表.目标是在单击列表的任何部分时列表保持可见,即使这会导致输入模糊.
我怎样才能做到这一点?谢谢!
许多DOM元素是可聚焦的:具有tabIndex,输入元素等的div.有没有简单的方法来检查元素是否可聚焦而不是检查大量不同的情况?有没有一个jQuery方法呢?
我正在使用业力测试案例测试angularjs中的焦点事件.但要素没有得到集中.在我执行element.focus()并检查元素是否被聚焦之后,我得到了错误.而此时的document.activeElement就是整个身体.
请提出解决方案.谢谢
对于以下注册表单,我将第一个输入字段配置id="signUpName"为在呈现表单时聚焦。Backbone-forms用于创建表单。

我想用Jasmine v.1.3.0测试加载视图时是否聚焦某个输入表单字段:
it("should focus the name field of the sign-up form", function() {
var signUpName = userController.loginView.signUpForm.$el.find("#signUpName");
userController.loginView.showSignUpForm();
expect(signUpName).toBeFocused();
// expect(signUpName.is(":focus")).toBe(true);
});
Run Code Online (Sandbox Code Playgroud)
茉莉花提示:
Expected '<input id="signUpName" name="signUpName" type="text">' to be focused.
Run Code Online (Sandbox Code Playgroud)
正如您从规范中看到的,我使用了jasmine-jquery 中的toBeFocused()匹配器。我运行的是最新版本的 1.5.93 扩展。我还发现了关于实现的讨论,并注意到他们同时将其更改为Ryan Greenberg 建议的替代实现。toBeFocused()
作为另一种选择,我试图监视焦点事件 - 如果真的有一个?
it("should focus the name field of the sign-up form", function() {
var signUpName = userController.loginView.signUpForm.$el.find("#signUpName");
var spyEvent = spyOnEvent(signUpName, 'focus');
userController.loginView.showSignUpForm();;
expect('focus').toHaveBeenTriggeredOn(signUpName);
expect(spyEvent).toHaveBeenTriggered();
}); …Run Code Online (Sandbox Code Playgroud) 如何获取html的输入标签有焦点或不使用jquery
如果输入,图像等标记具有焦点,则keydown事件将适用于表单.但它不会起作用它的重点是形式,但不是任何标签,如输入,图像等.我该如何解决这个问题.请提前帮助,谢谢
$('#title').focusout(function()
{
if($(document.activeElement).is(":focus"))
{
alert('focus');
}
else
{
alert('not focus');
}
});
//这不行
我的一个Web应用程序页面包含一个网格和一个搜索框.我捕获按键事件以使用空格键选择每个网格的行.但是,当有人想要在搜索框中查找短语时,这会产生问题.
我知道jQuery有一个.focus方法将事件处理程序绑定到输入或将焦点放在元素上.但是如何获取布尔值来确定搜索输入是否具有焦点?
可能重复:
使用jQuery测试输入是否具有焦点
我需要使用jQuery检查特定文本框是否具有焦点.所以我的代码是这样的,但它不起作用:
if (document.getElementById("lastname").focus = true) {
alert("hello");
}
Run Code Online (Sandbox Code Playgroud)
我的用例是这样的:我有一个文本框,当#lastname文本框获得或失去焦点时,应该显示或隐藏它.但是,如果#lastname文本框失去了对另一个文本框的焦点,后者应保持可见,直到它失去焦点.
任何帮助将不胜感激.
javascript ×10
jquery ×10
focus ×4
html ×2
angularjs ×1
caret ×1
cursor ×1
dom ×1
element ×1
jasmine ×1
karma-runner ×1
selenium-rc ×1
testing ×1
textbox ×1