用javascript的IE问题

时间:2010-04-08 11:29:08

标签: javascript html css

我有以下简单的脚本

<input class="input"  type="text" name="password" style="color: #797272;" 
       value= "<?php if ($_POST[password] != '') {echo '';}
         else {echo 'Ծածկաբառ';}?>"   
        onclick="if (this.value === this.defaultValue) {
                   this.value='';
                   this.style.color='black';
                   this.type='password';
                   }" 

      />

它工作正常,但在IE7中它不会改变输入类型。

this.type='password'; doesn't work
你可以帮帮我吗?感谢

更新

如果我想在输入中显示默认值,我该怎么办?

5 个答案:

答案 0 :(得分:2)

遗憾的是,IE不允许input标记更改为密码类型或从密码类型更改。很烦人。 '他们'说这是出于安全原因,但每个其他浏览器都允许它......

答案 1 :(得分:2)

您无法在Internet Explorer中使用JS更改输入类型,并且您采用的方法还有其他含义(例如可访问性问题)。

采用不同的方法并定位label元素可以避免更改字段的问题并大大减少可访问性问题。我写了一个例子:http://dorward.me.uk/tmp/label-work/example.html

答案 2 :(得分:1)

你根本无法在IE中执行此操作,它不允许您在将类型添加到DOM后更改类型。为此,您必须完全替换输入。

From the documentation

  

从Microsoft Internet Explorer 5开始,type属性是read / write-once,但仅在使用createElement方法创建输入元素时以及在将其添加到文档之前。

答案 3 :(得分:1)

如果它在IE 6中,似乎你无法改变类型......但是你可以替换整个元素:

http://bytes.com/topic/javascript/answers/705445-dynamically-change-input-type-text-password

答案 4 :(得分:0)

我找到的唯一一个解决方案,它工作正常

function change() 
    {
        var input=document.getElementById('some');
        var input2= input.cloneNode(false);
        input2.type='password';
        input.parentNode.replaceChild(input2,input);
    }