1

我想做的基本上是:

/*psuedo css code*/
input:textbox:active
{
    border: 1px solid blue;
}

有点像如何存在,a:active但对文本框执行此操作。我知道我可以使用 Javascript,但出于支持原因,因为我不知道这里谁知道 JavaScript,所以我试图将其排除在外。谢谢。

我还想要一个不活动的人来带走边界。谢谢。

4

3 回答 3

2

说你的文本框有 id TextBox,你可以使用#TextBox:focus { border: 1px solid blue; }

于 2011-02-02T17:09:09.490 回答
0

您可以使用 CSS 突出显示框,但它不会将焦点放在框上。为此,您需要使用 JavaScript,无论您是否将其公开给开发人员。您可以使用此处的技术隐藏存在 JavaScript 的事实。

于 2011-02-02T17:08:30.490 回答
0

对于半体面的浏览器上的一般情况,你已经有了答案,如果有人想让它在旧版本的 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的元素:focusblur

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 的测试。

于 2011-02-02T18:56:04.347 回答