javascript - 选中复选框以获取特定值

标签 javascript jquery

我有 10 个带有以下值的复选框, 7:00 8:00 8:30 9:00 9:30 10:00 10:30 11:00 11:30 12:00

现在只需考虑 7:00 到 9:00 已被检查。当我检查 11:30 时,我应该得到应该在 9:00 到 11:30 之间选择的所有值

所以在检查 11:00 后我的结果应该是

7:00 8:00 8:30 9:00 9:30 10:00 10:30 11:00 11:30 12:00

到目前为止我的代码:

HTML 代码为

<input type="checkbox" name="timer" id="timer" value="8:00" />
<input type="checkbox" name="timer" id="timer" value="8:30" />
<input type="checkbox" name="timer" id="timer" value="9:00" />
<input type="checkbox" name="timer" id="timer" value="9:30" />
<input type="checkbox" name="timer" id="timer" value="10:00" />    
<input type="checkbox" name="timer" id="timer" value="10:30" />
<input type="checkbox" name="timer" id="timer" value="11:00" />
<input type="checkbox" name="timer" id="timer" value="11:30" />
<input type="checkbox" name="timer" id="timer" value="12:00" />
<input type="checkbox" name="timer" id="timer" value="12:30" />

Jquery 代码是

var chkdtime = $('input[name="timecheckbox"]:checked').map(
    function() 
    {
        return this.value;
    }
).get(); 

var a=chkdtime.shift();
var b=chkdtime.pop();

最佳答案

我认为这段代码可以满足您的要求:

var $checks = $(':checkbox[name=timer]').on('change', function() {
    
    var $checked = $checks.filter(':checked'),
        changedIndex = $checks.index(this),
        $start = $checked.eq(0),
        $end = $checked.eq($checked.length - 1),
        from = $checks.index($start),
        to = $checks.index($end);
    
    if (changedIndex < to) {
        $checks.slice(changedIndex).prop('checked', false);
        to = changedIndex;
    }
    
    $checks.slice(from, to).prop('checked', true);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="timer" id="timer" value="8:00" checked /> 8:00 <br>
<input type="checkbox" name="timer" id="timer" value="8:30" checked /> 8:30 <br>
<input type="checkbox" name="timer" id="timer" value="9:00" checked /> 9:00 <br>
<input type="checkbox" name="timer" id="timer" value="9:30" checked /> 9:30 <br>
<input type="checkbox" name="timer" id="timer" value="10:00" /> 10:00 <br>
<input type="checkbox" name="timer" id="timer" value="10:30" /> 10:30 <br>
<input type="checkbox" name="timer" id="timer" value="11:00" /> 11:00 <br>
<input type="checkbox" name="timer" id="timer" value="11:30" /> 11:30 <br>
<input type="checkbox" name="timer" id="timer" value="12:00" /> 12:00 <br>
<input type="checkbox" name="timer" id="timer" value="12:30" /> 12:30 <br>

关键思想是使用 index() 方法计算选中复选框的索引,然后选中/取消选中之间的值。

关于javascript - 选中复选框以获取特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26559854/

相关文章:

javascript - 在 jquery append 语句中添加一个按钮变量

javascript - jquery,如何检查类是否已加载。然后更改功能以在第一次单击后隐藏

javascript - Wicket 6 - 使用 AjaxCallListener 防止 jQuery 调用将页面滚动到顶部

javascript - 尝试在用户键入时使用 javascript 正则表达式验证日期条目

javascript - 如何禁用 DIV 元素和里面的所有东西

javascript - JS 中的 HTML - 引号渲染不正确

javascript - window.print 时防止打印 url

javascript - 你能自动将 Javascript 关联到基于 CSS 类的 DOM 元素吗?

jquery - 排序和重新插入元素会删除绑定(bind)函数

javascript - Firefox 附加组件 pageMod,捕获 contentScriptFile 中完成的 ajax