简体   繁体   English

检查是否选中了JQuery mobile复选框

[英]Check if a JQuery mobile checkbox is checked

I have a list of Checkboxes & I want to get the status of each one of them. 我有一个复选框列表,我想获得每个复选框的状态。 The List is here : 清单在这里:

<div data-role="fieldcontain">
    <fieldset data-role="controlgroup">
       <input type="checkbox" name="Sunday" id="Sunday-1" class="custom" />
       <label for="Sunday-1">Sunday</label>
       <input type="checkbox" name="Monday" id="Monday-1" class="custom" />
       <label for="Monday-1">Monday</label>
       <input type="checkbox" name="Tuesday" id="Tuesday-1" class="custom" />
       <label for="Tuesday-1">Tuesday</label>
  </fieldset>
</div>

I usually Check the checkbox's status using this quote: 我通常使用此引号检查复选框的状态:

var isChecked = $('#CheckboxID').is(':checked');

But in my case now, is there a method to get the status of "Jquery Mobile" checkboxes all at once ? 但在我的情况下,是否有一种方法可以立即获取“Jquery Mobile”复选框的状态?

You can do 你可以做

var status = $('input[type="checkbox"]').filter('.custom').map(function(){
    return $(this).is(':checked') ? 1 : 0;

});

Then the status array will have an entry for each checkbox in the same order, 0 for unchecked and 1 for checked. 然后status array将以相同的顺序为每个复选框提供一个条目, 0表示未选中, 1表示已选中。 It's not much of useful as you have no other information of the checkbox in the array. 它没有多大用处,因为你没有关于数组中复选框的其他信息。

If you want to perform operation based on the status you can use .each() instead, like 如果你想根据status执行操作,可以使用.each()代替

$('input[type="checkbox"]').filter('.custom').each(function(){
   if($(this).is(':checked')){
     // perform operation for checked
   }
   else{
     // perform operation for unchecked
   }

});

UPDATE UPDATE

If you want to build an array of objects with the name and status of the checkboxes you can do that with 如果要构建具有复选框name and statusarray of objects可以使用

var status = $('input[type="checkbox"]').filter('.custom').map(function(){
    var name = $(this).attr('name'); 
    if($(this).is(':checked'))
         return { 'name':name, 'status' : 'Checked'}; 
    else
        return { 'name':name, 'status' : 'UnChecked'};

});

console.log(status);​

Demo: http://jsfiddle.net/joycse06/rL3Ze/ 演示: http //jsfiddle.net/joycse06/rL3Ze/

Read more on .each() and .map() 阅读.each().map()

I have this code. 我有这个代码。 I think you should adjust to your case. 我认为你应该适应你的情况。

  $('#formfriends input[type=checkbox]').each(function() {
    if ($(this).attr('checked'))
     //$(this).attr('disabled' , true);
     // do what you want here
  });

you can use jQuery each function http://api.jquery.com/jQuery.each/ 你可以使用jQuery的每个函数http://api.jquery.com/jQuery.each/

.each function will help you to traverse through your checkboxes .each函数将帮助您遍历复选框

for jQm 1.3 i had to check for the class on the label in the wrapper div 对于jQm 1.3,我必须检查包装器div中标签上的类

  • ui-checkbox-off UI的复选框关闭
  • ui-checkbox-on UI的复选框上

samplecode (already rendered by jQm): samplecode(已由jQm呈现):

<div class="ui-checkbox">
  <label data-corners="true" data-shadow="false" data-iconshadow="true" data-wrapperels="span" data-icon="checkbox-off" data-theme="a" data-mini="false" class="ui-checkbox-off ui-btn ui-btn-corner-all ui-fullsize ui-btn-icon-left ui-btn-up-a">
    <span class="ui-btn-inner">
      <span class="ui-btn-text">
        myLabel
      </span>
      <span class="ui-icon ui-icon-checkbox-off ui-icon-shadow">&nbsp;</span>
    </span>
  </label>
  <input type="checkbox" name="flip-num" class="flip-num">
</div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM