Thêm động sự kiện onClick bằng jQuery


128

Do một plugin đang được sử dụng, tôi không thể thêm thuộc tính "onClick" vào đầu vào biểu mẫu HTML như bình thường. Một plugin đang xử lý phần biểu mẫu trong trang web của tôi và nó không cung cấp tùy chọn để thực hiện việc này tự động.

Về cơ bản tôi có đầu vào này:

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

Tôi muốn thêm onClick vào nó với jQuery onload để nó giống như sau:

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

Làm thế nào để tôi làm điều này?

Tôi biết đây có thể không phải là cách thực hành tiêu chuẩn nhưng có vẻ như đây là lựa chọn dễ thực hiện nhất trong tình huống của tôi.

Tôi là một người mới sử dụng jQuery nên rất mong mọi sự giúp đỡ.

Câu trả lời:


211

Bạn có thể sử dụng clicksự kiện và gọi hàm của mình hoặc chuyển logic của bạn vào trình xử lý:

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

Bạn có thể sử dụng clicksự kiện và đặt chức năng của mình làm trình xử lý:

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

.nhấp chuột()

Liên kết trình xử lý sự kiện với sự kiện JavaScript "nhấp chuột" hoặc kích hoạt sự kiện đó trên một phần tử.

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


Bạn có thể sử dụng onsự kiện được liên kết với "click"và gọi hàm của mình hoặc chuyển logic của bạn vào trình xử lý:

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

Bạn có thể sử dụng onsự kiện được liên kết với "click"và đặt hàm của mình làm trình xử lý:

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

.trên()

Đính kèm một hàm xử lý sự kiện cho một hoặc nhiều sự kiện vào các phần tử đã chọn.

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


Đơn giản và dễ hiểu. Chính xác những gì tôi muốn. Một câu hỏi khác: cách dễ nhất để tích hợp sự thay đổi màu nền bằng jQuery là gì? hoặc tốt hơn là sử dụng 'style.backgroundColor = "white";' trong phần chức năng?
Claudio Delgado

39

hãy thử cách tiếp cận này nếu bạn biết tên khách hàng đối tượng của mình (không quan trọng đó là Nút hay Hộp văn bản)

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

hãy thử cái này nếu bạn muốn thêm sự kiện onClick vào đối tượng máy chủ bằng JQuery

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

Cái này thiết lập hàm, mà không cần gọi nó cùng một lúc.
Vassilis

Sử dụng .attr onClick thay vì .click cũng có nghĩa là bạn có thể chỉ định trực tiếp một lệnh script thay vì gọi một hàm, như "history.go(0);"hoặc "alert('Hi!');".
Jonathan

2
Đây chính xác là những gì tôi cần, vì tôi muốn vừa có thể xác định một hàm riêng biệt vừa có thể đặt hàm mà không cần gọi nó. Cảm ơn bạn đã muộn 4 năm.
kevin walker

1
Điều tôi thích ở câu trả lời này là nó không gọi hàm mà chỉ đặt onclick
gdrt

18

Hãy thử cách tiếp cận dưới đây,

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

hoặc trong trường hợp jQuery không phải là nhu cầu tuyệt đối thì hãy thử bên dưới,

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

Tuy nhiên, phương pháp trên có một số nhược điểm vì nó đặt onclick làm thuộc tính thay vì được đăng ký làm trình xử lý ...

Đọc thêm về bài đăng này https://stackoverflow.com/a/6348597/297641


Khi bạn nói 'Tuy nhiên phương pháp trên', không rõ bạn chỉ tham khảo phương thức javascript thuần túy .onclickhay nhóm cả hai phiên bản làm một so với việc sử dụng .click. Tôi biết nó thực sự là trước đây, cũng như .onđăng ký trình xử lý, nhưng đã phải kiểm tra ở nơi khác để tìm hiểu điều đó. Sẽ rất tốt cho những độc giả trong tương lai nếu câu trả lời của bạn rõ ràng hơn ...;)
AntonChanning


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

0

Hoặc bạn có thể sử dụng một hàm mũi tên để xác định nó:

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

  });
});

Để được hỗ trợ trình duyệt tốt hơn:

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

  });
});

1
Tôi không thấy cách điều này cung cấp bất kỳ điều gì mới vì câu trả lời được chấp nhận đã đề xuất .click()phương pháp. Theo tôi, việc sử dụng các hàm mũi tên hay các hàm thông thường là một cuộc thảo luận không liên quan đến câu hỏi được hỏi. Và để hỗ trợ trình duyệt tốt hơn, bạn có thể nên loại bỏ cả hai chức năng mũi tên, không chỉ chức năng đầu tiên.
agrm

Bởi vì là một cách khác để sử dụng jQuery
Gabriel Jaime Sierra Rua
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.