更改输入元素的类型

时间:2011-07-23 18:14:29

标签: jquery html

我想要input type="text"转换为input type="button"。我尝试了attr(),但does not work

HTML:

<input type="text"></input>

JavaScript的:

$('input').attr('type', 'button');

怎么了?

2 个答案:

答案 0 :(得分:6)

您无法使用jQuery更改type属性。这是来自jQuery source

// We can't allow the type property to be changed (since it causes problems in IE)
if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
    jQuery.error( "type property can't be changed" );
}

根据评论,原因是它在IE中引起问题。由于jQuery旨在减少由于浏览器之间的差异而引起的复杂性,如果它在其他浏览器中工作,则会违背该想法。我假设这就是为什么jQuery团队只是删除了这种能力。

正如已经提到的,您最好的选择可能是用新的元素替换有问题的input元素。

答案 1 :(得分:0)

这部分涵盖在the documentation

  

注意: Internet Explorer不允许您更改类型   <input><button>元素的属性。

您甚至无法在任何浏览器中尝试此操作来自jQuery源:

// We can't allow the type property to be changed (since it causes problems in IE)
if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
    throw "type property can't be changed";

(看起来文档需要更新。)