4

私はjQueryを使用しています。無効になっているテキストエリアがあります: <textarea id="textarea" disabled="disabled"></textarea>. ユーザーがテキストエリアをクリックすると、アラートボックスなどの何かが実行されるようにしたいと考えています。だから、私は持ってい$('#textarea').click(function() { alert('Test'); });ます。

ただし、これはテキストエリアが無効になっていない場合にのみ機能します。では、テキストエリアが無効になっている場合でもクリックイベントを発生させるにはどうすればよいですか?

4

5 に答える 5

10

disabled="disabled"なぜ使用しないかの代わりにreadonly、readyonly は無効とほぼ同じであり、クリック イベントが機能します。

于 2012-07-29T18:23:13.607 に答える
5

無効にする代わりに、CSS で無効な動作をシミュレートして、そこからマウス イベントを受け取り続けることができます。

または、入力が無効になっているときにこれらのマウスイベントを受け取るために、入力の上に非表示の要素 (オーバーレイ) を配置する方法を示す無効な入力 のイベントに関する回答を参照してください。Andy E

彼はオーバーレイを削除し、クリックされたときに入力を有効にしますが、動作は好きなように変更できます。

于 2012-07-29T18:17:15.110 に答える
2

無効化された要素は、マウス イベントを発生させません。ほとんどのブラウザーは、無効化された要素から発生したイベントを DOM ツリーに伝播するため、イベント ハンドラーをコンテナー要素に配置できます。ただし、Firefox はこの動作を示しません。無効な要素をクリックしても何もしません。

次のようなことができます。

$(document).on('click', function(e) { 
    if (e.target.id === 'textarea') alert('works');
});​​​​

フィドル

しかし、おそらくクロスブラウザではありません!

別のより良い方法は、無効になっている要素の上に別の要素を配置し、その要素でイベントをキャッチすることです。

var t = $("#textarea"),
    over = $('<div</div>');
    over.css({
        position: "absolute",
        top: t.position().top,
        left: t.position().left,
        width: t.outerWidth(),
        height: t.outerHeight(),
        zIndex: 1000,
        backgroundColor: "#fff",
        opacity: 0
    });

t.after(over);

$(over).on('click', function() { 
    alert('works');
});​

フィドル

于 2012-07-29T18:21:19.957 に答える
1

無効化された要素は、クリック イベントを発生させません。それは彼らが無効になっていることの一部です。

于 2012-07-29T18:18:23.580 に答える
0

値を設定することはできますが、無効な要素からクリック イベントを発生させることはできません。

http://jsfiddle.net/j6tdn/28/

于 2012-07-29T18:26:49.703 に答える