当我开始在textarea中编写文本时,我想要外部的div,一个类框,让它的边框变为固体,而不是虚线,但不知何故:焦点不适用于这种情况。如果它适用于:活动,它是如何不与工作:焦点?
任何想法为什么?
(注意,我想要DIV的边框变成固体,而不是textareas)
div.Box { width: 300px; height: 300px; border: thin dashed black; } div.Box:focus{ border: thin solid black; } <div class="Box"> <textarea rows="10" cols="25"></textarea> </div>
解决方法
虽然这不能用CSS / HTML单独实现,但可以使用JavaScript实现(不需要库):
var textareas = document.getElementsByTagName('textarea'); for (i=0;i<textareas.length;i++){ // you can omit the 'if' if you want to style the parent node regardless of its // element type if (textareas[i].parentNode.tagName.toString().toLowerCase() == 'div') { textareas[i].onfocus = function(){ this.parentNode.style.borderStyle = 'solid'; } textareas[i].onblur = function(){ this.parentNode.style.borderStyle = 'dashed'; } } }
顺便说一句,使用一个库,如jQuery,上面可以缩减到:
$('textarea').focus( function(){ $(this).parent('div').css('border-style','solid'); }).blur( function(){ $(this).parent('div').css('border-style','dashed'); });
参考文献:
> getElementsByTagName()
。
> onfocus
。
> onblur
。
> parentNode
。
> tagName
。
> toString()
。
> toLowerCase()
。
> style
。
> focus()
。
> blur()
。
> parent()
。
> css()
。