2012-07-22 58 views
0

如何在第二个输入中插入Javascript代码?第二个输入标签 - 我如何添加?

<input type="checkbox" onchange="document.getElementById('pass').type = this.checked ? 'text' : 'password'"> Show password 

原始代码:

document.getElementById('pass').type 

好,工作,但..

document.getElementById('pass' 'pass2').type 

第二个 “PASS2” 我该怎么补充?

对不起,我英文不好

+1

你不能这样做,你必须为其他元素执行相同的一段代码。即你必须调用'document.getElementById'并且分配两次(你也可以创建一个封装这个逻辑的函数)。如果不使用HTML属性来绑定事件处理程序,那将更容易。查看http://www.quirksmode.org/js/introevents.html以了解绑定事件处理程序的各种方法。 – 2012-07-22 15:47:14

+0

@JaredFarrish:看看那之后的部分......它是条件运算符的一部分。 – Ryan 2012-07-22 15:52:43

+0

@Jared:看起来没什么好,它似乎切换明文/隐藏密码。但我隐约记得,IE不会让你改变类型...不知道。 – 2012-07-22 15:52:43

回答

2

这是不可能的,只是叫getElementById两次,最好用一个真实的事件处理函数。

function togglePasswordVisibility() { 
    if(this.checked) { 
     document.getElementById('pass').type = 'text'; 
     document.getElementById('pass2').type = 'text'; 
    } else { 
     document.getElementById('pass').type = 'password'; 
     document.getElementById('pass2').type = 'password'; 
    } 
} 

另外请注意,您的代码将无法在Internet Explorer 8和更早(我认为这是正确的版本号),因为它修复type的元素添加到文档后。

+0

测试:http://jsfiddle.net/AaRUS/适用于IE9;检查IE8及以下。编辑:IE8,不起作用。 – 2012-07-22 16:01:30

+0

它在IE8中似乎也不能使用jQuery的'$ .prop()'或'$ .attr()'。 – 2012-07-22 16:04:53

+0

@JaredFarrish:嗯,jQuery的'prop'和'attr'只是委托给'[]'和'.setAttribute',所以我并不感到惊讶。克隆它是凌乱的,并打破事件处理程序,所以我认为最好将这个功能放在IE8及更早的版本上。 – Ryan 2012-07-22 16:29:44

0

你不能这样做没有环或复制使用香草DOM功能粘贴。我要么使用jQuery,要么将该行变成一个函数,然后可以在变化时调用该函数。

jQuery的等价:

$('#toggle-pass').click(function() { 
    $('#pass, #pass2').prop('type', this.checked ? 'text' : 'password'); 
}); 
<label><input type="checkbox" id="toggle-pass" /> Show password</label> 
相关问题