0

フォームに追加されるボタンがあります。フォームはアプリケーションのある時点で動的に作成され、ボタンは次のように追加されます。

$('#imgform').append("<center><input type='submit' value='Upload' id='#imgupload' onclick='showUploadedItem()'/>");

これは私のコードですshowUploadedItem()

function showUploadedItem () {
    $('#upload_process').show();
            // a bunch of other things to do
           $('#imgupload').prop('disabled',true);
           console.log("the submit button ID is: " + $('#imgupload').attr('id'));
}

しかし、console.log メッセージには、ボタン ID がundefinedであることが示されています。これは、コードのこの時点ではボタンが存在していないことを意味します。動的に作成されたものであり、おそらくイベントをバインドする必要があることは理解できますが、どのようにしてクリックされ、コンソール メッセージが表示されるのでしょうか?

関数内でこのボタンを無効にするにはどうすればよいですか? それとも不可能ですか?

4

4 に答える 4

3

あなたのhtmlはid="#imgupload"合法とは思われないものを使用しています。楽しみのために、私はセレクターをこれを機能させることができました:

 $('#\\#imgupload').prop('disabled',true);

それは確かに間違いのように見えますが、あなたのhtmlは単にid="imgupload"

フィドル

また、jQueryを使用している場合、なぜインラインjavascriptを使用するのですか?イベントハンドラーをバインドするだけです(これについてもフィドルを参照してください)。

于 2013-01-28T08:55:32.910 に答える
2

これは、ID を書き留める方法で、HTML にエラーがあるためです。# は、CSS または jQuery (#+Name) で ID-Name を参照するために使用されます。HTML では、次のように名前だけです。

$('#imgform').append("<center><input type='submit' value='Upload' id='imgupload' onclick='showUploadedItem()'/>");
于 2013-01-28T08:36:02.457 に答える
2

#IDの前に与える必要はありません。コードからそれを削除します

このように変化し、

$('#imgform').append("<center><input type='submit' value='Upload' id='imgupload' onclick='showUploadedItem()'/>");
于 2013-01-28T08:36:48.800 に答える
1

ボタン ID から # を削除すると、これが修正されます。

于 2013-01-28T08:37:09.390 に答える