2012-08-13 26 views
3

我正在嘗試使用jquery編寫一個javascript,如果複選框被選中或不選中,應該能夠挑選出並使用信息。這應該發生在每次點擊複選框(具有id'edit-toggle-me')時。我已經爲它寫了一個測試函數,其中包含一些alert()以查看我是否成功了。它執行任何警報,所以我猜它崩潰在$('#edit-toggle-me')。checked()。我不知道爲什麼。使用javascript獲取複選框的狀態

我也試過這樣:

(function ($) { 

    $(document).ready(function() { 

     $('#edit-toggle-me').click(function(){ 
      var elementy = document.getElementById('edit-toggle-me'); 
      var check = elementy.value; 
      alert(check); 
      if(elementy.checked()) { 
       alert('yup'); 
      } 
     }); 
    }); 
})(jQuery); 

第一個提醒的作品,但也還是最後兩個「燁」或「NUP」。

然後我也試過這樣:

(function ($) { 

    $(document).ready(function() { 

     $('#edit-toggle-me').click(function(){ 

      var element2 = document.getElementById('edit-toggle-me'); 
      var check = element2.value; 
      alert(check); 

     }); 
    }); 
    })(jQuery); 

這始終返回1,我不明白爲什麼無論是。

感謝任何提示。

+0

令人驚歎的是,你甚至可以問這個megaFAQ – mplungjan 2012-08-13 13:30:23

回答

4

在jQuery或DOM API中沒有像.checked()這樣的方法。如果元素被選中,元素上只有.checked屬性,即true,否則爲false。試試這個:

(function ($) { 
    "use strict"; 
    $(document).ready(function() { 

     $('#edit-toggle-me').click(function(){ 
      alert(this.checked ? ":)" : ":("); 
     }); 
    }); 

})(jQuery); 

觀看演示:http://jsfiddle.net/scZ3X/

5

使用​​。您可以找到文檔HERE

JSFIDDLE

+0

使用複選框DOM元素的'checked'屬性更簡單,更快,更兼容。 – 2012-08-13 13:35:04

0

試試這個:

$('#edit-toggle-me').is(':checked') 
1
$(function(){ 
    $('#edit-toggle-me').on('change', function(){ 
     if($(this).is(':checked')) { 
      alert('checked'); 
     } 
     else { 
      alert('unchecked'); 
     } 
    }); 
}); 

你應該使用改變事件,而不是點擊。因爲在某些情況下,單擊事件不適合在複選框和單選按鈕中使用。

例1:

如果你有一個單選按鈕具有click事件綁定。萬一你的單選按鈕已經是真的,你點擊單選按鈕。它不會改變單選按鈕的值,但是您的點擊事件每次都會觸發。

但如果您使用更改事件。您的事件將觸發只有當你的單選按鈕值有變化(如果它已經沒有檢查或真)

例2: 如果您有任何單選按鈕任何標籤或複選框。如果您在複選框或單選按鈕中單擊事件綁定。點擊你的標籤,你的複選框或單選按鈕的值有變化,但你的點擊事件不會打電話。

如果發生更改事件。它也可以像標籤相關的標籤一樣按預期工作。