首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何选择重点突出的文本区域?

如何选择重点突出的文本区域?
EN

Stack Overflow用户
提问于 2015-10-09 16:25:46
回答 5查看 113关注 0票数 0

我有两个textarea,当我按enter时,如果length of textarea小于5,那么向它添加一个类。实际上,我的问题是为两个textarea添加类。我如何才能添加这个类,仅针对一个专注的textarea

这是一把小提琴。这是我的密码:

HTML:

代码语言:javascript
复制
<textarea id="textarea-1" name="t_comment"></textarea>
<textarea id="textarea-2" name="t_comment"></textarea>

CSS:

代码语言:javascript
复制
.t_border{
    border:2px dashed;
}

Jquery:

代码语言:javascript
复制
$( 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;         
        }  
   }
});
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-10-09 16:37:49

将您的$('textarea')选择器更改为$('textarea:focus')似乎可以做到这一点。

下面是您更新的代码,我将textarea放入一个变量中,避免一次又一次地选择它,效率更高。http://jsfiddle.net/86829ryz/8/

正如注释中所建议的那样,我还将event.shiftKey更改为e.shiftKey,因为您从未将事件放在参数中。

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

代码语言:javascript
复制
$( 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;        
        }  
   }

});

关于:将伪类集中在MDN上

票数 3
EN

Stack Overflow用户

发布于 2015-10-09 16:38:02

更新:

我不知道您为什么要使用setTimeout,但请尝试如下:

代码语言:javascript
复制
<textarea id="textarea-1" name="t_comment" class="t_border"></textarea>
<textarea id="textarea-2" name="t_comment" class="t_border"></textarea>

$( document ).on( 'keydown', function ( e ) {
    if (e.keyCode===13)
    {

        $('textarea:focus').each(function()
        {
            if($(this).val().length <= 5 && !e.shiftKey)
            {
                $(this).toggleClass("t_border");                      
            } 
        });
   }    

});

.t_border{
    border:2px dashed;  
}

小提琴:http://jsfiddle.net/86829ryz/6/

票数 2
EN

Stack Overflow用户

发布于 2015-10-09 16:41:02

试试这个-

代码语言:javascript
复制
$( document ).on( 'keydown', 'textarea', function ( e ) {
	if (e.keyCode===13){
        if($(this).val().length <= 5 && !e.shiftKey){
      		$(this).addClass("t_border");	
   			return false;	      
        } else {
        	 $(this).removeClass("t_border");
        } 
   }
});
代码语言:javascript
复制
.t_border{
    border:2px dashed;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="textarea-1" name="t_comment"></textarea>
<textarea id="textarea-2" name="t_comment"></textarea>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33043085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档