jQueryを使用してonClickイベントを動的に追加する


128

プラグインが使用されているため、通常のように「onClick」属性をHTMLフォーム入力に追加できません。プラグインが私のサイトのフォーム部分を処理していて、これを自動的に行うオプションがありません。

基本的に私はこの入力を持っています:

<input type="text" id="bfCaptchaEntry" name="bfCaptchaEntry" style="">

次のようになるように、jQuery onloadでonClickを追加したいと思います。

<input onClick="myfunction()" type="text" id="bfCaptchaEntry" name="bfCaptchaEntry" style="">

これを行うにはどうすればよいですか?

これは標準的な方法ではないかもしれませんが、私の状況で行う最も簡単なオプションのようです。

私はjQueryの初心者なので、どんな助けにも感謝します。

回答:


211

clickイベントを使用して関数を呼び出すか、ロジックをハンドラーに移動できます。

$("#bfCaptchaEntry").click(function(){ myFunction(); });

clickイベントを使用して、関数をハンドラーとして設定できます。

$("#bfCaptchaEntry").click(myFunction);

。クリック()

イベントハンドラーを「クリック」JavaScriptイベントにバインドするか、要素でそのイベントをトリガーします。

http://api.jquery.com/click/


onバインドされたイベントを使用し"click"て関数を呼び出すか、ロジックをハンドラーに移動できます。

$("#bfCaptchaEntry").on("click", function(){ myFunction(); });

onバインドされたイベントを使用して"click"、関数をハンドラーとして設定できます。

$("#bfCaptchaEntry").on("click", myFunction);

。オン()

選択した要素に1つ以上のイベントのイベントハンドラー関数をアタッチします。

http://api.jquery.com/on/


シンプルでわかりやすい。まさに私が欲しかったもの。別の質問:jQueryを使用して背景色の変更を統合する最も簡単な方法は何ですか?または、「style.backgroundColor = "white";」を使用する方が良いでしょう。関数セクションでは?
Claudio Delgado 2012

38

オブジェクトのクライアント名がわかっている場合は、このアプローチを試してください(ButtonまたはTextBoxであることが重要ではありません)

$('#ButtonName').removeAttr('onclick');
$('#ButtonName').attr('onClick', 'FunctionName(this);');

JQueryを使用してonClickイベントをサーバーオブジェクトに追加する場合は、これを試してください。

$('#' + '<%= ButtonName.ClientID %>').removeAttr('onclick');
$('#' + '<%= ButtonName.ClientID %>').attr('onClick', 'FunctionName(this);');

これは同時に呼び出すことなく、関数を設定します。
Vassilis

.clickの代わりに.attr onClickを使用すると、"history.go(0);"またはのような関数を呼び出す代わりに、スクリプトコマンドを直接割り当てることもできます"alert('Hi!');"
ジョナサン

2
別の関数を定義し、それを呼び出さずに関数を設定できるようにしたいので、これはまさに私が必要とするものです。4年遅れてありがとう。
ケビンウォーカー

1
この回答で私が気に入っているのは、関数を呼び出さずにonclickを設定するだけです
gdrt

18

以下のアプローチを試してください、

$('#bfCaptchaEntry').on('click', myfunction);

またはjQueryが絶対に必要でない場合は、以下を試してください、

document.getElementById('bfCaptchaEntry').onclick = myfunction;

ただし、上記のメソッドにはハンドラとして登録されるのではなく、プロパティとしてonclickを設定するため、いくつかの欠点があります...

この投稿について詳しく読むhttps://stackoverflow.com/a/6348597/297641


「上記の方法ですが」と言うとき、単純なjavascriptメソッドだけを参照している.onclickか、またはを使用する場合と比較して両方のバージョンを1つにグループ化しているかは明確ではありません.click.onハンドラーを登録するように、私は実際には前者を知っていますが、それを学ぶために他の場所をチェックする必要がありました。それがあなたの答えでより明確であるならば、それは将来の読者にとって良いでしょう...;)
AntonChanning


1
let a = $("<a>bfCaptchaEntry</a>");
a.attr("onClick", "function(" + someParameter+ ")");

0

または、アロー関数を使用して定義できます。

$(document).ready(() => {
  $('#bfCaptchaEntry').click(()=>{

  });
});

より良いブラウザサポートのために:

$(document).ready(function() {
  $('#bfCaptchaEntry').click(()=>{

  });
});

1
受け入れられた回答がすでに.click()方法を示唆していたので、これがどのように新しいものを提供するかはわかりません。アロー関数を使用するか通常の関数を使用するかは、私の意見では、質問とは関係のない議論です。また、ブラウザのサポートを強化するには、最初の関数だけでなく、両方の矢印関数を削除する必要があります。
agrm 2017

なぜなら、jQueryを使用するもう1つの方法だからです
Gabriel Jaime Sierra Rua
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.