我想做的基本上是:
/*psuedo css code*/
input:textbox:active
{
border: 1px solid blue;
}
有点像如何存在,a:active
但对文本框执行此操作。我知道我可以使用 Javascript,但出于支持原因,因为我不知道这里谁知道 JavaScript,所以我试图将其排除在外。谢谢。
我还想要一个不活动的人来带走边界。谢谢。
说你的文本框有 id TextBox
,你可以使用#TextBox:focus { border: 1px solid blue; }
您可以使用 CSS 突出显示框,但它不会将焦点放在框上。为此,您需要使用 JavaScript,无论您是否将其公开给开发人员。您可以使用此处的技术隐藏存在 JavaScript 的事实。
对于半体面的浏览器上的一般情况,你已经有了答案,如果有人想让它在旧版本的 IE 中也能工作,那么这里是我之前准备的一个 hack。它基于SuckerFish下拉菜单代码,其基础是您拥有的任何样式都:hover
可以重复这样的类.sfhover
:
textarea:hover, input[type=text]:hover, input[type=password]:hover, textarea.sfhover, input.sfhover {
border: 1px solid blue;
}
然后你有一个函数将事件处理程序附加到和INPUT
事件TEXTAREA
的元素:focus
blur
function highlightInputs () {
var sfEls = document.getElementsByTagName("INPUT");
for (var i=0; i<sfEls.length; i++) {
if (sfEls[i].type == 'text' | sfEls[i].type == 'password') {
sfEls[i].onfocus=function() {
this.className+=" sfhover";
}
sfEls[i].onblur=function() {
this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
}
}
}
sfEls = document.getElementsByTagName("TEXTAREA");
for (var i=0; i<sfEls.length; i++) {
sfEls[i].onfocus=function() {
this.className+=" sfhover";
}
sfEls[i].onblur=function() {
this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
}
}
}
代码只需要在IE中运行,不用担心跨浏览器的兼容性。然后使用某种 IE 检测方法仅在 IE 中运行页面加载功能:
if (window.attachEvent) window.attachEvent("onload", highlightInputs);
$.browser.msie
如果您已经加载了该库,您还可以使用条件注释或类似 jQuery 的测试。