8

私の問題は非常に単純です

$('#button').removeAttr('type');

Firebugでエラーをトリガーします

type property can't be changed

2つの質問があります:

  • これを回避する方法は?
  • 変更できないプロパティのリストを含む参照はありますか?

ありがとう

編集

私がやりたいことは:

ボタンがフォームを送信しないようにします。

注:私のボタンはhtmlテンプレートとして含まれているため、フォームコードにアクセスできません。
何かのようなもの:

include 'form.php';
include 'buttons.php';

私はbuttons.phpのみを制御できます

4

3 に答える 3

17

DOMに挿入された後、IE(<9?)でinput'を変更することはできません。typeこのため、jQueryはすべてのブラウザでエラーを発生させます。

ソースから:

    set: function( elem, value ) {
            // 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" );

私が知っている(またはjQueryが知っている)他のケースはありません。これを回避する方法は、最初に何をしようとしているかに大きく依存します。たとえば、異なるタイプの新しい要素を作成し、それを使用することを検討してください。

編集:ボタンがフォームを送信しないようにするには、次を使用できます。

$("#button").click(function(e){
    e.preventDefault();
});

または(クレジットTim Down):

$("#button").prop("disabled", true);

フォームが何らかの方法で送信されないようにするには、次を使用できます。

$("#form").submit(function(e){
    e.preventDefault();
});
于 2012-06-14T11:19:39.593 に答える
6

あなたはそれを置き換えることができます:

$('#button').replaceWith('<input type="text" value="text"/>');

または使用するevent.preventDefault()

于 2012-06-14T11:27:50.790 に答える
1

送信ボタンを無効にしたいだけなので:

jQuery <1.6を使用している場合は、次のようにします。

$("#button").attr("disabled", 'disabled');

jQuery 1.6以降を使用している場合:

$("#button").prop("disabled", true);

理由については、次の質問を参照してください:.prop()と.attr()

于 2012-06-14T11:33:51.127 に答える