Javascript - 文本输入属性

时间:2010-05-26 13:07:05

标签: javascript events forms

我需要创建一个表单元素

  

< input disabled type =“text”value =“Shui Mu Tsinghua”/>

默认情况下已禁用。它可以在 onmouseover 发生时启用。

  

的onmouseover = “this.disabled = FALSE;”

onmouseout

禁用
  

的onmouseout = “this.disabled = TRUE;”


我需要检查以下内容。 如果< input>重点是它不应该被禁用。

如果表单元素失去焦点则会禁用。

请帮我完成活动。

< input disabled type =“text”value =“水沐清华”onmouseover =“this.disabled = false;” onfocus =“ ??? ”onblur =“ ??? ”onmouseout =“if( ??? ){this.disabled = true ;}“/>

4 个答案:

答案 0 :(得分:4)

这不起作用,因为在大多数浏览器中,onmouseover不会触发禁用的输入。 (Opera是一个例外,IE通常不会,除非你通过拖动操作欺骗它。)

在任何情况下,对我来说,这听起来都是一个非常奇怪且对用户不友好的伎俩。 为什么你想禁用它吗?如果在尝试与之交互时它变为非禁用状态,那么它似乎没有任何意义(但是有很多可访问性的缺点)。

如果它只是造型,那么使用样式:

<style type="text/css">
    .weirdinput { color: silver; }
    .weirdinput:hover, .weirdinput:focus { color: black; }
</style>

<input class="weirdinput" value="smth" />

但是,IE&lt; 8不支持:focus,IE&lt; 7不支持非链接上的:hover,因此如果您需要它,那么您必须添加一些脚本,例如。类似的东西:

<style type="text/css">
    .weirdinput { color: silver; }
    .weirdinput:hover, .weirdinput:focus, .weirdhover, .weirdfocus { color: black; }
</style>

<input class="weirdinput" value="smth" />

<!--[if lt IE 8]><script type="text/javascript">(function() {

    // Fix focus/hover for IE on all inputs with class 'weirdinput'
    //
    var inputs= document.getElementsByTagName('input');
    for (var i= 0; i<inputs.length; i++) {
        var input= inputs[i];
        if (input.className.indexOf('weirdinput')!==-1) {
            input.onmouseover= mouseover;
            input.onmouseout= mouseout;
            input.onfocus= focus;
            input.onblur= blur;
        }
    }

    function mouseover() {
        this.className+= ' weirdhover';
    }
    function mouseout() {
        this.className= this.className.replace(' weirdhover', '');
    }
    function focus() {
        this.className+= ' weirdfocus';
    }
    function blur() {
        this.className= this.className.replace(' weirdfocus', '');
    }

})();</script><![endif]-->

答案 1 :(得分:0)

你能做的是;

  1. on focus将变量设置为true;
  2. on blur将变量设置为false;和残疾人真实
  3. onmouseover set disabled如果为true,则设置为false
  4. onmouseout set仅在IF变量为false时禁用; (所以不要专注)

答案 2 :(得分:0)

我认为您在获取此行为时会遇到很多麻烦,因为禁用的字段不会收到mouseover(或mouseenter,如果您的浏览器支持它)事件。我甚至尝试在它下面的元素上捕获事件,但禁用的字段会吃它。

答案 3 :(得分:0)

已禁用的字段未提交,不在键标签节点列表中,也不会侦听或传递事件。您禁用输入,以便用户无法更改其值。

如果没有首先获得焦点,则无法更改字段。

您只能通过脚本更改disabled属性,该脚本来自页面上其他位置的事件。

但是如果没有名称,就像在您的示例中一样,字段的值在任何情况下都不会随其表单一起提交,那么该字段被禁用的重要性如何?

如果您的意图是在javascript 启用时禁用该字段,为什么不用css隐藏它并以脚本风格显示?