JQuery觸發radio或checkbox的change事件

來源:互聯網
上載者:User

早上要做一功能,checkbox被選中時,顯示隱藏的層,取消選中時,再隱藏選中的層。
初始代碼如下:
複製代碼 代碼如下:
$(function(){
$("#ischange").change(function() {
alert("checked");
});
});

搗騰了半天,竟然一點反應都沒有。百度了下,有高人指出上面幾行代碼在Firefox等瀏覽器中可以正常運行,即你選中複選框或取消複選框都會彈出一個對話方塊,但是在IE中卻不會正常執行,即選中或取消複選框不會立即彈出對話方塊。

必須在選中或取消複選框之後再點擊除了複選框之外的任何一個地方,據說是因為IE會等到複選框失去焦點之後才會觸發change事件。
改進之後的代碼如下:
複製代碼 代碼如下:
$(function(){
if ($.browser.msie) {
$('input:checkbox').click(function () {
this.blur();
this.focus();
});
};
$("#ischange").change(function() {
alert("checked");
});
});

補充:當改變複選框的值後,IE在等待失去焦點,但是click事件是立即觸發的,因此利用click事件讓複選框失去焦點,這樣就會觸發chang事件了,然後再把焦點重新轉移到該複選框上。
如果是radio,將checkbox換成radio即可。

在JQuery中,當給radio或checkbox添加一個change事件時,如果它的值發生變化就會觸發change事件,就如同我們在 HTML中寫入下代碼:
複製代碼 代碼如下:
<input type="checkbxo" id="testCheckbox" onchange="myfunction()"name="fruits">,

而我們用JQuery的代碼如下:
複製代碼 代碼如下:
$(document).ready(function(){
$("testCheckbox").change(function() {
alert("Option changed!");
});
});

以上代碼在Firefox等瀏覽器中可以正常運行,即當你選中複選框或取消複選框都會彈出一個對話方塊,但是在IE中卻不會正常執行,即你選中或取消複選框不會立即彈出對話方塊,你必須在選中或取消複選框之後再點擊除了複選框之外的任何一個地方,之所以這樣,據說是因為IE會等到複選框失去焦點之後才會觸發change事件,目前這個問題還沒有被修複,不過網上有高人已經提供瞭解決方案:
複製代碼 代碼如下:
$(function () {if ($.browser.msie) {$('input:checkbox').click(function () { this.blur(); this.focus(); }); }});

以上代碼只要把checkbox就可以適用於radio, 以上代碼的原理是:當改變複選框的值後,IE在等待失去焦點,但是click事件是立即觸發的,因此利用click事件讓複選框失去 焦點,這樣就會觸發chang事件了,然後再把焦點重新轉移到該複選框上。有人可能會問為什麼不直接用click事件來代替change事件,對於checkbox來說,click事件和change都可以完成同樣的功能,但是對於radio來說就不一樣了,你可以連續點擊同一個radio而值不變,這時就會不停的觸發click事件而不會觸發change事件。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.