javascript - 如何选择,聚焦文本区域?

标签 javascript jquery html css

我有两个 textarea 并且当我按下 enter 时,如果 textarealength 较小大于 5 然后向其添加一个类。实际上我的问题是将为两个 textarea 添加类。我怎样才能添加那个类,只为一个聚焦的 textarea

Here is a fiddle .这是我的代码:

HTML:

<textarea id="textarea-1" name="t_comment"></textarea>
<textarea id="textarea-2" name="t_comment"></textarea>

CSS:

.t_border{
    border:2px dashed;
}

J查询:

$( document ).on( 'keydown', function ( e ) {
    if (e.keyCode===13){
        if($('textarea', this).val().length <= 5 && !event.shiftKey){
            $('textarea').toggleClass("t_border");
            setTimeout( function(){$('textarea').toggleClass("t_border");}, 400);   
            return false;         
        }  
   }
});

最佳答案

$('textarea') 选择器更改为 $('textarea:focus') 似乎可以解决问题。

这是你更新后的代码,我把textarea放到了一个变量里,不用一遍又一遍地选择它效率更高。 http://jsfiddle.net/86829ryz/8/

正如评论中所建议的,我还将 event.shiftKey 更改为 e.shiftKey,因为您从未将事件放入参数中。

我还为事件添加了一个选择器,因此它只能在文本区域中使用。否则,即使您没有专注于任何事情,keydown 也会触发事件并在控制台中返回错误。 这实际上使我的整个 :focus 解决方案有点多余var textarea = $(this); 也可以工作,因为事件从文本区域。但至少现在你知道如何选择一个有焦点的元素,这是最初的问题。

$( document ).on( 'keydown', 'textarea', function ( e ) {
    if (e.keyCode===13){
        var textarea = $('textarea:focus');
        if(textarea.val().length <= 5 && !e.shiftKey){
            textarea.toggleClass("t_border");
     setTimeout( function(){textarea.toggleClass("t_border");}, 400);   
                 return false;        
        }  
   }

});

About the :focus pseudo-class on MDN

关于javascript - 如何选择,聚焦文本区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33043085/

相关文章:

javascript - 更改中心的 HTML5 视频按钮

javascript - 如何在 jquery $.post 中停止?

javascript - 未知的函数行为

javascript - 如何获取data-id值

javascript - 是否可以仅对特定 div 使用 user-scalable=yes ?

html - 使用 HTML/CSS 创建悬停下拉菜单时遇到问题

javascript - Node js 添加所需的模型

javascript - 重现photojojo的幻灯片技术

javascript - 找到单词并回显其后的 100 个字符

javascript(尝试复制 windows.location 但没有成功)