2012-12-04 51 views
-8

比方说,例如,我有代码:为什么这jQuery选择不起作用?

<form id="validate_form2"> 
    <ul> 
     <li> 
      <label for="nome">Nome:</label> 
      <input id="nome" type="text"> 
     </li> 
     <li> 
      <label for="email">Email:</label> 
      <input id="email" type="text"> 
     </li> 
     <li> 
      <label for="phone">Phone:</label> 
      <input id="phone" type="text"> 
     </li> 
    </ul> 
</form> 

哪能类型更改从投入与ID =“电子邮件”内部“VALIDATE_FORM2”的形式?

+4

它改变什么来代替呢? – Archer

+1

你是如何改变类型的? –

+1

有没有机会? – robertp

回答

1

你可以像下面这样做与jQuery - 无需将其转换回DOM元素

$('#email')[0].type = 'password';​​​​​​ 
// or using .prop $('#email').prop('type','password');​​​​​​ 

http://jsfiddle.net/68ZPh/

或只是简单的JS

document.getElementById('email').type = 'password'; 

http://jsfiddle.net/tHWwZ/

正如评论中所提到的,这可能会是一个问题在IE浏览器本身的问题..

从jQuery的.attr()文档

注:jQuery的禁止改变上或元素的类型属性,并会在所有浏览器抛出一个错误。这是因为在Internet Explorer中无法更改type属性。

另一种方法是创建一个新的输入与

$('#email').replaceWith('<input type="password" id="email"/>'); 

http://jsfiddle.net/uVXvk/

+0

这可能会起作用,但jQuery源代码显示“它在IE中导致问题”,因此它们会阻止它。 – pimvdb