2011-06-24 16 views
5

Tôi đang thực hiện chức năng "Địa chỉ thanh toán giống như địa chỉ", khi hộp kiểm được chọn sẽ điền vào các trường dựa trên các trường khác. Hoạt động hoàn hảo.Hộp kiểm Jquery Trigger: chức năng gắn với sự kiện nhấp chuột xảy ra trước khi thuộc tính được chọn được đặt

Chức năng cho sự kiện nhấp chuột ..

if ($(this).attr('checked')) { 
     // copy address fields to billing fields 
    } 
    else{ 
     // clear fields 
    } 

Bây giờ tôi sử dụng một (plugin jquery hotkey) sự kiện để tự động điền tất cả các trường theo hình thức vì vậy tôi có thể dễ dàng và nhanh chóng giới thiệu và thử nghiệm các hình thức . Thay vì gian lận và điền vào các lĩnh vực thanh toán như các trường địa chỉ tôi muốn sử dụng

$("#CheckboxForAutofillId").trigger('click'); 

này không làm việc lần đầu tiên tôi bắn sự kiện này, như trong các chức năng trên được gọi là nó kiểm tra các thuộc tính của kiểm tra, tuy nhiên kích hoạt ('click'), dường như gọi sự kiện TRƯỚC KHI nó thay đổi thuộc tính.

Có nghĩa là đối với tôi để mô phỏng một cách chính xác tôi phải làm điều này ..

$("#CheckboxForAutofillId").attr("checked", "checked"); // sets checked 
$("#CheckboxForAutofillId").trigger('click');   // fires event then 'unchecks' 
$("#CheckboxForAutofillId").attr("checked", "checked"); // rechecks 

Reading trang jquery cho cò, tôi đã không nhận thấy điều này đã đề cập, và tôi đã không làm phiền để khai thác thông qua nguồn để xem những gì thực sự xảy ra nhưng dường như với tôi lý tưởng sự kiện kích hoạt nên đặt thuộc tính 'đã kiểm tra' trước khi tự kích hoạt sự kiện vì đó là mô phỏng tốt hơn về một người kiểm tra hộp kiểm?

Tôi có thiếu gì đó không?

Trả lời

8

bạn nên sử dụng thay đổi() thay vì nhấp().

$("#CheckboxForAutofillId").change(function() 
{ 
    if(this.checked) ... 
}); 
+1

luôn sẵn lòng xem sử dụng hợp lý kết hợp js/jquery +1 – BumbleB2na

Các vấn đề liên quan