Додавання події onClick динамічно за допомогою jQuery


128

Через використовуваний плагін я не можу додати атрибут "onClick" до входів HTML-форми, як зазвичай. Плагін обробляє частину форм на моєму сайті, і він не дає можливості зробити це автоматично.

В основному я маю цей вклад:

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

Я хочу додати до нього onClick з завантаженням jQuery, щоб він був таким:

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

Як мені це робити?

Я знаю, що це може бути не стандартною практикою, але здається, що це найпростіший варіант у моїй ситуації.

Я новачок в jQuery, тому будь-яка допомога дуже вдячна.

Відповіді:


211

Ви можете використовувати clickподію та викликати свою функцію або переміщувати свою логіку в обробник:

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

Ви можете використовувати clickподію та встановити свою функцію як обробник:

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

.click ()

Прив’яжіть обробник події до події JavaScript "натисніть" або запустити цю подію на елементі.

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


Ви можете використовувати onподію, пов'язану з цим, "click"і викликати свою функцію або переміщувати свою логіку в обробник:

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

Ви можете використовувати onподію, пов'язану з цим, "click"і встановити свою функцію як обробник:

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

.on ()

Додайте до обраних елементів функцію обробника подій для однієї або декількох подій.

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


Простий і легкий для розуміння. Саме те, що я хотів. Ще одне питання: який найпростіший спосіб інтегрувати зміну кольору фону за допомогою jQuery? або краще використовувати 'style.backgroundColor = "білий";' у розділі функцій?
Клаудіо Дельгадо

39

спробуйте цей підхід, якщо ви знаєте ім'я свого об'єктного клієнта (не важливо, що це кнопка або TextBox)

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

спробуйте це, якщо ви хочете додати подію onClick до об’єкта сервера за допомогою JQuery

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

Цей встановлює функцію, не викликаючи її одночасно.
Василіс

Використання .attr onClick замість .click також означає, що ви можете безпосередньо призначити команду сценарію замість виклику функції, наприклад, "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або групуєте обидві версії як одну в порівнянні з використанням .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

Тому що це ще один спосіб використання jQuery
Габріель Хайме Сьєрра Руа
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.