2017-06-30 204 views
0

如果复选框被单击,则复选框的值必须为1.如果没有单击复选框,则其值必须为0.由于某种原因,以下代码似乎无法正常工作。jquery复选框选中更改值

// Checkbox values 1/0. 
 
$("#prefForm").submit(function() { 
 
    $("input[type=checkbox]").each(function() { 
 
    var self = $(this); 
 
    if (self.is(":checked")) { 
 
     self.val('1'); 
 
    } else { 
 
     self.val('0'); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="select-activity"> 
 
    <ul> 
 
    <li> 
 
     <!-- <input type="hidden" name="donate_buskie" value=""> --> 
 
     <input type='checkbox' id='checkbox-1' class='pseudo-checkbox sr-only' name="donate_buskie" value="0" /> 
 
     <label for='checkbox-1' class='glyphicon-check-click fancy-checkbox-label'><span><?php echo JText::_('When someone donates to my Buskie'); ?></span> 
 
</label> 
 
    </li> 
 
    <li> 
 
     <!-- <input type="hidden" name="receives_donation" value=""> --> 
 
     <input type='checkbox' id='checkbox-2' class='pseudo-checkbox sr-only' name="receives_donation" value="0" /> 
 
     <label for='checkbox-2' class='glyphicon-check-click fancy-checkbox-label'><span><?php echo JText::_('When someone receives a donation'); ?></span> 
 
</label> 
 
    </li> 
 
    <li> 
 
     <input type='checkbox' id='checkbox-3' class='pseudo-checkbox sr-only' name="comment_buskie" value="0" /> 
 
     <label for='checkbox-3' class='glyphicon-check-click fancy-checkbox-label'><span><?php echo JText::_('When someone posts a comment on your Buskie'); ?></span> 
 
</label> 
 
    </li> 
 
    <li> 
 
     <input type='checkbox' id='checkbox-4' class='pseudo-checkbox sr-only' name="comment_reply" value="0" /> 
 
     <label for='checkbox-4' class='glyphicon-check-click fancy-checkbox-label'><span><?php echo JText::_('When someone replies to my comment'); ?></span> 
 
</label> 
 
    </li> 
 
    </ul>

+0

您的代码段工作正常! –

+0

这段代码有什么意义?它违背了使用复选框的标准模式,因为如果该框未被选中,则请求中不会发送任何值。因此,取消选中时值为'0'是没有意义的。如果你想知道哪些复选框没有被选中,使用'map()'创建每个复选框的checked状态的布尔数组会更有意义 –

回答

1

没有必要使用jQuery指定的复选框1/0值,阉检查或不基于。该复选框已经包含一个布尔值。如果您需要一和零,你可以只使用

var number_value = self.val() ? 1 : 0;