2009-02-13 109 views
8

我有一些選擇元素的onChange事件附加到他們的窗體。即使有人點擊表單重置按鈕,我也希望事件發生。表單重置按鈕觸發選擇元素onChange事件嗎?

我的問題是:是否重置表單觸發選擇元素onChange事件?

這裏是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> 

由於一個簡單的例子!

+1

難道去這個測試並不容易嗎? – Powerlord 2009-02-13 17:59:37

回答

3

沒有爲形式的onReset標籤,所以你可以這樣做:

<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> 

復位發生之前該方法被調用,雖然因此它可能會非常棘手。我想你可以做一個「你確定嗎?」框。在重置函數中拋出一個setTimeout似乎可以做到這一點。

2

Jack M.的回答非常好。這是另一種做法。希望它能幫助別人。

編寫代碼/您想在此函數中調用的事件。我已經測試過了。運作良好。

$(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 
    }); 
});