2017-06-30 194 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;