jQuery聚焦不同的事件,具体取决于下一个聚焦点

Philly_de

我有一个带有文本输入字段$ newItemField的列表,默认值=“ New Item”。通过单击输入按钮$ addButton,可以将$ newItemField的值添加到列表中。

当.focusin $ newItemField时,我将默认值删除为this.value =“”;

当.focusout与$ newItemdField =“”时,我将默认值重置为$ newItemField =“ New Item”。两者都很好。

我的问题是,如何将.focusout与特定输入字段的.focusin组合。换句话说,当.focusout wuth $ newItemField =“”时,我只想在不单击$ addButton ???时重置默认值?

现在发生的是,当$ newItemField =“”并单击$ addButton时,.focusout首先起作用($ newItemField =“ New Item”),然后将一个名为“ New Item”的项添加到列表中。这就是我要防止发生的事情。

我尝试了很多使用if和click()的方法,但是没有用。我希望在下面为我的代码提供任何形式的支持。

$newItemField.each(function() {
    $(this).data('default', this.value);
})
.focusin(function() {
    if (this.value == $(this).data('default')) {
        this.value = '';    
    }
})
.focusout(function() {
    if  (this.value === ""){            
        this.value = $(this).data('default');      
    }

});

$addButton.click(function() {
    addItem();
    $newItemField.select();
});

威廉回答后,这里是我的变化。现在,不管.activeElement如何,§newItemField都不会显示任何值。换句话说,不单击添加按钮时,我缺少默认值“ New Item”。

$newItemField.each(function() {
    $(this).data('default', this.value);
})
.focusin(function() {
    if (this.value == $(this).data('default')) {
        this.value = '';    
    }
})
.focusout(function() {

    setTimeout(function () {


    if ($(document.activeElement).attr('id')!==$('add')//the id of the add button is #add
        {

        if ($newItemField.value === ""){
            this.value = $(this).data('default');
        }             

    }
}, 100);



});
威廉·史密斯

您可以在焦点输出函数中使用setTimeout来检查按钮是否具有焦点,并且仅在没有焦点时才更改该值。

.focusout(function() {
    setTimeout(function () {
        if ($(document.activeElement).attr('id')!='$addButton')
        {
             //run code
             //remember 'this' no longer refers to $newItemField
        }
    }, 100);

});

试试这个:

.focusout(function() {
        setTimeout(function () {
            if ($(document.activeElement).attr('id') != ('add')) {
                {
                $(newItem).val('New Item');
                }

            }
        }, 100);


});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java流sorted()行为取决于下一个takeWhile()调用

使用jQuery查找并聚焦第一个元素

TextInput:当maxLength填满时,自动聚焦下一个字段

如何导航/聚焦到Angular2中的下一个项目?

如何将焦点放在第一个可聚焦元素jQuery上?

如何自动将下一个TextInput聚焦在react-native上

如何聚焦下一个字段输入以响应本机?

jQuery:在进入焦点下一个输入

按下Enter键后如何聚焦于下一个输入框。jQuery的

禁用聚焦按钮不会将焦点移到下一个可聚焦项

按下键盘的ENTER按钮时,将内容添加或聚焦到下一个输入字段

如何扩展缩短的p标签文本取决于下一个p标签?

是否有可能获得一个元素的ID,该元素负责使另一个元素失去焦点,内部模糊或聚焦事件

如何检测列表中的下一个任务,具体取决于顺序

在下一个工作日动态渲染,具体取决于当前的“天”

改造请求的顺序,下一个请求取决于上一个请求的结果

设置一个SASS变量,具体取决于

一旦在不同的容器中达到 maxlength 就聚焦下一个输入

自动聚焦下一个输入字段

当 FocusSearch 中的下一个控件无法聚焦在 Telerik 数据表单上时,应用程序崩溃

自动聚焦 jQuery 脚本不针对下一个输入字段

似乎无法聚焦下一个 TextInput (React-Native)

一旦达到 maxlength 值,聚焦并启用下一个输入

达到 maxlength 后自动聚焦到下一个输入

是否有 jquery 事件在焦点离开元素之前或下一个元素获得焦点之前运行?

jQuery 聚焦并选择下一个输入不起作用

在下一个子列表中添加新元素,具体取决于它是否已添加(也涉及字典问题)python

输入更改值的角度数组聚焦下一个元素并放置与前一个相同的值

如果输入被聚焦,则在触发下一个事件后文本流出输入