2011-07-23 10 views
2

input type="button"に変換したいinput type="text"があります。私はattr()を試してみましたが、does not workこと:入力要素のタイプを変更する

HTML:

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

のJavaScript:

は何が問題になっています
$('input').attr('type', 'button'); 

+0

uはjQueryのを含みませんでした? – DrStrangeLove

+1

あなたのタイトルを修正しました。将来は意味のあるタイトルを書いてください。 –

答えて

6

type属性をjQueryで変更することはできません。これは、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要素を新しいものに置き換えることです。

+0

+1ソースを掘るために。 – Tomalak

+0

ありがとう!どのように私は未来に投げ込まれるこれらの種類のエラーをキャッチしますか? – Randomblue

+0

@Randomblue - 'try ... catch'ブロックを使用して' try'部分内で発生する例外をキャッチすることができます。それ以外に、コンソールに表示される例外がスローされるタイミングを知ることができます(少なくとも、他のブラウザーでは試していません)。 –

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"; 

は(ドキュメントの更新を必要とするように見えます。)

関連する問題