2014-01-16 47 views
3

我想以編程方式觸發選中複選框。例如:使用jQuery以編程方式觸發複選框

$(function(){ 
    //create a trigger that if a checkbox changes, eg is clicked/change show an alert 
    $("#idCheckbox").on("change", function(){ 
     if($(this).is(':checked')){ 
      alert("Is checked!"); 
     } 
    }); 

    //onload put it checked 
    $("#idCheckbox").attr("checked", "checked"); 
}); 

「問題」是,如果我在負載檢查由JavaScript的()方法不被觸發的複選框,並沒有示出警報。

上面的代碼是一個例子,其實檢查複選框的腳本不是我的,我不能修改它。

我正在使用jQuery 1.8.0

任何建議嗎?

在此先感謝。

+0

您是否嘗試過使用$('#idCheckbox')。trigger('change'); (或點擊事件)?也許它不是射擊事件,只是改變狀態? – Justinas

+2

不幸的是,編程式更改(即由代碼而不是用戶交互進行的更改)不會觸發更改事件。 –

+0

修改元素的屬性時,不會觸發'change'事件。 – hunter

回答

6

而非屬性設置爲檢查您可以撥打click()上的複選框來觸發事件,你以前勢必


$(function(){ 
    var $checkbox = $("#idCheckbox"); 
    $checkbox.on("change", function(){ 
     if(this.checked){ 
      alert("Is checked!"); 
     } 
    }); 

    $checkbox.click(); 
}); 

例如:http://jsfiddle.net/hunter/wpLb2/

+0

我不能做$(「#idCheckbox」)。click(); 另一個腳本與我的不同,它檢查複選框。不管怎麼說,還是要謝謝你 – Mikel

0

你可以將您的內聯定義函數移動到全局範圍並調用它:

function checkBoxClick(){ 
    if($(this).is(':checked')){ 
     alert("Is checked!"); 
    } 
} 

$(function(){ 
    //create a trigger that if a checkbox changes, eg is clicked/change show an alert 
    $("#idCheckbox").on("change", checkBoxClick); 

    // Trigger your click function 
    checkBoxClick();  

    //onload put it checked 
    $("#idCheckbox").attr("checked", "checked"); 


}); 
0

當使用javascript以編程方式檢查複選框時,onchange事件不會自動觸發。因此,將複選框標記爲已選中的腳本應該調用onchange事件。