JQuery觸發(fā)radio或checkbox的change事件
更新時間:2012年12月18日 14:57:11 作者:
在JQuery中,當(dāng)給radio或checkbox添加一個change事件時,如果它的值發(fā)生變化就會觸發(fā)change事件;本文將詳細介紹如何利用JQuery觸發(fā)Checkbox的change事件需要了解的朋友可以參考下
早上要做一功能,checkbox被選中時,顯示隱藏的層,取消選中時,再隱藏選中的層。
初始代碼如下:
$(function(){
$("#ischange").change(function() {
alert("checked");
});
});
搗騰了半天,竟然一點反應(yīng)都沒有。百度了下,有高人指出上面幾行代碼在Firefox等瀏覽器中可以正常運行,即你選中復(fù)選框或取消復(fù)選框都會彈出一個對話框,但是在IE中卻不會正常執(zhí)行,即選中或取消復(fù)選框不會立即彈出對話框。
必須在選中或取消復(fù)選框之后再點擊除了復(fù)選框之外的任何一個地方,據(jù)說是因為IE會等到復(fù)選框失去焦點之后才會觸發(fā)change事件。
改進之后的代碼如下:
$(function(){
if ($.browser.msie) {
$('input:checkbox').click(function () {
this.blur();
this.focus();
});
};
$("#ischange").change(function() {
alert("checked");
});
});
補充:當(dāng)改變復(fù)選框的值后,IE在等待失去焦點,但是click事件是立即觸發(fā)的,因此利用click事件讓復(fù)選框失去焦點,這樣就會觸發(fā)chang事件了,然后再把焦點重新轉(zhuǎn)移到該復(fù)選框上。
如果是radio,將checkbox換成radio即可。
在JQuery中,當(dāng)給radio或checkbox添加一個change事件時,如果它的值發(fā)生變化就會觸發(fā)change事件,就如同我們在 HTML中寫入下代碼:
<input type="checkbxo" id="testCheckbox" onchange="myfunction()"name="fruits">,
而我們用JQuery的代碼如下:
$(document).ready(function(){
$("testCheckbox").change(function() {
alert("Option changed!");
});
});
以上代碼在Firefox等瀏覽器中可以正常運行,即當(dāng)你選中復(fù)選框或取消復(fù)選框都會彈出一個對話框,但是在IE中卻不會正常執(zhí)行,即你選中或取消復(fù)選框不會立即彈出對話框,你必須在選中或取消復(fù)選框之后再點擊除了復(fù)選框之外的任何一個地方,之所以這樣,據(jù)說是因為IE會等到復(fù)選框失去焦點之后才會觸發(fā)change事件,目前這個問題還沒有被修復(fù),不過網(wǎng)上有高人已經(jīng)提供了解決方案:
$(function () {if ($.browser.msie) {$('input:checkbox').click(function () { this.blur(); this.focus(); }); }});
以上代碼只要把checkbox就可以適用于radio, 以上代碼的原理是:當(dāng)改變復(fù)選框的值后,IE在等待失去焦點,但是click事件是立即觸發(fā)的,因此利用click事件讓復(fù)選框失去 焦點,這樣就會觸發(fā)chang事件了,然后再把焦點重新轉(zhuǎn)移到該復(fù)選框上。有人可能會問為什么不直接用click事件來代替change事件,對于checkbox來說,click事件和change都可以完成同樣的功能,但是對于radio來說就不一樣了,你可以連續(xù)點擊同一個radio而值不變,這時就會不停的觸發(fā)click事件而不會觸發(fā)change事件。
初始代碼如下:
復(fù)制代碼 代碼如下:
$(function(){
$("#ischange").change(function() {
alert("checked");
});
});
搗騰了半天,竟然一點反應(yīng)都沒有。百度了下,有高人指出上面幾行代碼在Firefox等瀏覽器中可以正常運行,即你選中復(fù)選框或取消復(fù)選框都會彈出一個對話框,但是在IE中卻不會正常執(zhí)行,即選中或取消復(fù)選框不會立即彈出對話框。
必須在選中或取消復(fù)選框之后再點擊除了復(fù)選框之外的任何一個地方,據(jù)說是因為IE會等到復(fù)選框失去焦點之后才會觸發(fā)change事件。
改進之后的代碼如下:
復(fù)制代碼 代碼如下:
$(function(){
if ($.browser.msie) {
$('input:checkbox').click(function () {
this.blur();
this.focus();
});
};
$("#ischange").change(function() {
alert("checked");
});
});
補充:當(dāng)改變復(fù)選框的值后,IE在等待失去焦點,但是click事件是立即觸發(fā)的,因此利用click事件讓復(fù)選框失去焦點,這樣就會觸發(fā)chang事件了,然后再把焦點重新轉(zhuǎn)移到該復(fù)選框上。
如果是radio,將checkbox換成radio即可。
在JQuery中,當(dāng)給radio或checkbox添加一個change事件時,如果它的值發(fā)生變化就會觸發(fā)change事件,就如同我們在 HTML中寫入下代碼:
復(fù)制代碼 代碼如下:
<input type="checkbxo" id="testCheckbox" onchange="myfunction()"name="fruits">,
而我們用JQuery的代碼如下:
復(fù)制代碼 代碼如下:
$(document).ready(function(){
$("testCheckbox").change(function() {
alert("Option changed!");
});
});
以上代碼在Firefox等瀏覽器中可以正常運行,即當(dāng)你選中復(fù)選框或取消復(fù)選框都會彈出一個對話框,但是在IE中卻不會正常執(zhí)行,即你選中或取消復(fù)選框不會立即彈出對話框,你必須在選中或取消復(fù)選框之后再點擊除了復(fù)選框之外的任何一個地方,之所以這樣,據(jù)說是因為IE會等到復(fù)選框失去焦點之后才會觸發(fā)change事件,目前這個問題還沒有被修復(fù),不過網(wǎng)上有高人已經(jīng)提供了解決方案:
復(fù)制代碼 代碼如下:
$(function () {if ($.browser.msie) {$('input:checkbox').click(function () { this.blur(); this.focus(); }); }});
以上代碼只要把checkbox就可以適用于radio, 以上代碼的原理是:當(dāng)改變復(fù)選框的值后,IE在等待失去焦點,但是click事件是立即觸發(fā)的,因此利用click事件讓復(fù)選框失去 焦點,這樣就會觸發(fā)chang事件了,然后再把焦點重新轉(zhuǎn)移到該復(fù)選框上。有人可能會問為什么不直接用click事件來代替change事件,對于checkbox來說,click事件和change都可以完成同樣的功能,但是對于radio來說就不一樣了,你可以連續(xù)點擊同一個radio而值不變,這時就會不停的觸發(fā)click事件而不會觸發(fā)change事件。
您可能感興趣的文章:
- JS檢測頁面中哪個HTML標簽觸發(fā)點擊事件的方法
- 解決Js先觸發(fā)失去焦點事件再執(zhí)行點擊事件的問題
- javascript觸發(fā)模擬鼠標點擊事件
- jquery 觸發(fā)a鏈接點擊事件解決方案
- jquery mobile的觸控點擊事件會多次觸發(fā)問題的解決方法
- jQuery第一次運行頁面默認觸發(fā)點擊事件的實例
- jquery實現(xiàn)點擊label的同時觸發(fā)文本框點擊事件的方法
- 解決jQuery ajax動態(tài)新增節(jié)點無法觸發(fā)點擊事件的問題
- JQuery觸發(fā)事件例如click
- jQuery事件的綁定、觸發(fā)、及監(jiān)聽方法簡單說明
- javascript/jquery實現(xiàn)點擊觸發(fā)事件的方法分析
相關(guān)文章
jQuery validate+artdialog+jquery form實現(xiàn)彈出表單思路詳解
在項目需求中有這樣一功能:在頁面彈出一個form表單,ajax無刷新提交表單,表單需通過驗證。下面小編給大家介紹通過jQuery validate+artdialog+jquery form實現(xiàn)彈出表單思路詳解,需要的朋友參考下吧2016-04-04
如何解決jQuery EasyUI 已打開Tab重新加載問題
最近在項目中遇到這樣的需求,要求實現(xiàn)點擊左側(cè)已經(jīng)打開的tab可以刷新重新加載datagrid。下面給大家分享實現(xiàn)代碼,一起看看吧2016-12-12
關(guān)于 jQuery Easyui異步加載tree的問題解析
想要實現(xiàn)從本地中加載json文件,通過事件來動態(tài)的插入到ul中時,遇到了一小bug,下面小編給大家解答下2016-12-12
解決JQeury顯示內(nèi)容沒有邊距內(nèi)容緊挨著瀏覽器邊線
JQuery頁面顯示的內(nèi)容沒有邊距,內(nèi)容緊挨著瀏覽器邊線,下面有個不錯的解決方法,大家可以嘗試下2013-12-12
動態(tài)生成的DOM不會觸發(fā)onclick事件的原因及解決方法
下面小編就為大家?guī)硪黄獎討B(tài)生成的DOM不會觸發(fā)onclick事件的原因及解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08

