Javascript 关于输入焦点和模糊的后续问题

Javascript 关于输入焦点和模糊的后续问题,javascript,internet-explorer,Javascript,Internet Explorer,我今天已经问了一个问题: 现在我有了一个可以工作的代码,但只在FF(完全)和IEs(7和8)中工作 在firefox中,一切都很完美,我在focus上调用这个函数,这样我的旧密码输入就变成了文本输入 现在,当我在这个输入(onblur)之外单击时,字段类型再次变为文本,值恢复为密码。如果再次单击该字段(onfocus),则我的文本类型输入再次变为密码,并且值返回到“” 这在FF中非常有效,但在IE中都不起作用,当我说“无”时,我指的是模糊和聚焦。从文本输入到密码输入的第一个更改是有效的。谢谢你的

我今天已经问了一个问题:

现在我有了一个可以工作的代码,但只在FF(完全)和IEs(7和8)中工作

在firefox中,一切都很完美,我在focus上调用这个函数,这样我的旧密码输入就变成了文本输入

现在,当我在这个输入(onblur)之外单击时,字段类型再次变为文本,值恢复为密码。如果再次单击该字段(onfocus),则我的文本类型输入再次变为密码,并且值返回到“”

这在FF中非常有效,但在IE中都不起作用,当我说“无”时,我指的是模糊和聚焦。从文本输入到密码输入的第一个更改是有效的。谢谢你的回答

我找到了更好的解决方案,但在IE中也不起作用:

Inner window.load函数放置:

applyPasswordType(document.getElementById('password_property_input'), 'Password', 'text');
以及函数本身

function applyPasswordType(elem, val, typ) {
      elem.value = val;
      elem.type = typ;
      elem.onfocus = function() {
        if(this.value == val) {
          this.style.color = '';
          this.type = 'password'; //If in focus, input type will be 'password'
          this.value = '';
        }
      }

      elem.onblur = function() {
         if(this.value == '') {
           this.value = val;
           this.type = 'text'; //On blur, input type will be 'text' in order to show value
         }
       }
     }

我还在想办法用addeventlistener解决这个问题

setAttribute
在IE中已损坏,请不要使用它

直接使用属性:

foo.onevent = function () { ... }
更好的是,使用


您可能还会发现IE无法更改现有输入的类型。如果是这样,您必须创建一个新的输入并替换现有的输入。

所以我应该在IE中每次都替换输入?有办法绕过它吗?我指的是另一种对我正在尝试做的事情的全局的方法。我希望我的密码有“password”的值,当我集中精力更改为带有密码屏蔽的真实密码字段时,也可以使用onblur来恢复密码字段的密码值。另外,你能否澄清一下“foo.onevent=function(){…}”部分,我不知道你在说什么(我的错)。谢谢我可以澄清一下OneEvent=的内容。。。但是关于addEventListner/attachEvent的链接文章是一个更好的解决方案。至于更好的解决方案,如果我后退一步,看看这个问题——停止滥用value属性作为标签。使用
元素作为标签。(如果你真的想变得聪明,那就试着把标签放在输入下面。参见未完成的例子)+1,在头上敲两颗钉子@c0mrade:re
setAttribute
和事件,David指的是无法更改现有输入的类型,David指的是
foo.onevent = function () { ... }