ASP:文本框;是否有“OnFocus”或CSS等价物

时间:2011-02-02 17:04:49

标签: html css textbox onfocus

我想做的主要是:

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

有点像a:active,但对文本框这样做。我知道我可以使用Javascript,但出于支持原因,因为我不知道谁知道JavaScript,我试图阻止它。感谢。

我也想要一个不活跃的东西带走边界。感谢。

3 个答案:

答案 0 :(得分:2)

假设您的文本框标识为TextBox,则可以使用#TextBox:focus { border: 1px solid blue; }

答案 1 :(得分:0)

您可以使用CSS突出显示该框,但不会将焦点放在框中。要做到这一点,您需要使用JavaScript,无论是否将它暴露给开发人员。您可以使用here技术隐藏JavaScript的事实。

答案 2 :(得分:0)

你已经have an answer for the general case在一半不错的浏览器上,如果有人想让它在旧版本的IE中工作,那么这里是我之前准备的黑客。它基于SuckerFish下拉菜单代码,其基础是:hover您为类.sfhover重复的任何样式,如下所示:

textarea:hover, input[type=text]:hover, input[type=password]:hover, textarea.sfhover, input.sfhover {
    border: 1px solid blue;
}

然后你有一个函数将事件处理程序附加到INPUTTEXTAREA事件的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);

如果您已经加载了该库,您还可以使用条件注释或类似jQuery的$.browser.msie测试。