我有两个 textarea
并且当我按下 enter
时,如果 textarea
的 length
较小大于 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;
}
}
});
关于javascript - 如何选择,聚焦文本区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33043085/