2009-02-13 32 views
8

Tôi có một biểu mẫu với một số yếu tố được chọn có các sự kiện onChange được đính kèm với chúng. Tôi muốn sự kiện này kích hoạt ngay cả khi ai đó nhấp vào nút đặt lại biểu mẫu.Nút đặt lại biểu mẫu có kích hoạt sự kiện onChange chọn lọc không?

Câu hỏi của tôi là: đặt lại biểu mẫu kích hoạt các yếu tố được chọn trênThay đổi sự kiện?

Dưới đây là một ví dụ đơn giản trong jQuery

<script type="text/javascript"> 
    $('.myselect').change(function() { 
     // do something on change 
    }); 
</script> 

<form action="/" method="post"> 
    <select class="myselect" name="select1"> 
     <option value="1">First</option> 
     <option value="2">Second</option> 
    </select> 
    <select class="myselect" name="select2"> 
     <option value="1">First</option> 
     <option value="2">Second</option> 
    </select> 
    <!-- When this is clicked I would like it fire the change event --> 
    <input type="reset" value="Reset" /> 
    <input type="submit" value="Save" /> 
</form> 

Cảm ơn!

+1

Sẽ dễ dàng hơn khi đi và kiểm tra điều này? – Powerlord

+1

Tôi đã thử nghiệm và nó không hoạt động. Tôi thậm chí không chắc chắn nếu nó có thể vì vậy đó là lý do tại sao tôi hỏi. Thu hẹp nó xuống lỗi của tôi, hoặc thực tế là bạn không thể làm điều đó. – user22730

+1

@Powerlord Tôi phải nói, tôi luôn nghĩ rằng "chỉ cần thử nghiệm nó" là một gợi ý khủng khiếp. OP sẽ chỉ khám phá xem có điều gì đó hoạt động trong trình duyệt/phiên bản của anh ấy hay không. Một giải pháp tốt hơn là làm theo các tiêu chuẩn chính thức/tài liệu API. – osullic

Trả lời

3

Có một thẻ onReset cho các hình thức, vì vậy bạn có thể làm một cái gì đó như:

<script type="text/javascript"> 
    var changeFunc = function() { 
     // do something on change. 
    }; 
    $('.myselect').change(changeFunc); 
</script> 

<form onReset="changeFunc()" action="/" method="post"> 
    <select class="myselect" name="select1"> 
     <option value="1">First</option> 
     <option value="2">Second</option> 
    </select> 
    <select class="myselect" name="select2"> 
     <option value="1">First</option> 
     <option value="2">Second</option> 
    </select> 
    <!-- When this is clicked I would like it fire the change event --> 
    <input type="reset" value="Reset" /> 
    <input type="submit" value="Save" /> 
</form> 

Phương pháp này được gọi là trước khi thiết lập lại xảy ra, mặc dù vậy nó có thể được khôn lanh. Tôi đoán bạn có thể làm một "Bạn có chắc không?" cái hộp. Việc tung ra một số setTimeout trong chức năng đặt lại dường như thực hiện thủ thuật.

2

Câu trả lời của Jack M. đang hoạt động tốt. Đây là một cách tiếp cận khác để thực hiện tương tự. Hy vọng nó sẽ giúp ai đó.

Viết mã/sự kiện mà bạn muốn gọi ở giữa chức năng này. Tôi đã thử nghiệm điều này. Làm việc tốt.

$(document).ready(function() { 
    $("input:reset").click(function() {  // apply to reset button's click event 
     this.form.reset();     // reset the form 

     // call your functions to be executed after the reset  

     return false;       // prevent reset button from resetting again 
    }); 
}); 
Các vấn đề liên quan