我对JavaScript或jQuery几乎一无所知。
我需要在<select>中选择/取消选择一个选项,单击复选框或按钮时可以选择多个选项。
复选框需要选中/取消选中具有相同值的选项。我的想法是这样的:
$(document).ready(function() {
var input = $('#entry-select');
var checkboxes = $('.entrycheckbox');
checkboxes.click(function() {
var element = $(this);
var value = element.val();
input.val(value);
})
});<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" class="entrycheckbox" value="1">
<input type="checkbox" class="entrycheckbox" value="2">
<input type="checkbox" class="entrycheckbox" value="3">
<form action="">
<select name="entries" id="entry-select" multiple>
<option value="1">Option1</option>
<option value="2">Option2</option>
<option value="3">Option3</option>
</select>
</form>
这只会选择具有上次单击复选框的值的选项,而不是选中哪些复选框,并且会取消选择其他所有选项。
发布于 2019-11-29 19:17:02
您只需为val()提供最后选中的复选框的值。要使其按您的要求工作,您需要构建一个包含所有选中复选框的数组,并将其提供给val()。
为此,您可以使用filter()获得选中的复选框,然后使用map()构建阵列:
input.val(checkboxes.filter(':checked').map((i, el) => el.value));
$(document).ready(function() {
var $input = $('#entry-select');
var $checkboxes = $('.entrycheckbox');
$checkboxes.click(function() {
$input.val($checkboxes.filter(':checked').map((i, el) => el.value));
})
});<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" class="entrycheckbox" value="1">
<input type="checkbox" class="entrycheckbox" value="2">
<input type="checkbox" class="entrycheckbox" value="3">
<form action="">
<select name="entries" id="entry-select" multiple>
<option value="1">Option1</option>
<option value="2">Option2</option>
<option value="3">Option3</option>
</select>
</form>
如果您不希望用户直接更改所选的readonly,则可能还需要考虑将option添加到select中。
发布于 2019-11-29 19:22:00
<script type="text/javascript">
$(document).ready(function(){
$('.entrycheckbox').click(function(){
$(":entrycheckbox").each(function(){
if($(this).val()==1){
$(this).attr("checked","checked");
}
});
});
});
</script>https://stackoverflow.com/questions/59103729
复制相似问题