使用JQUERY立即将选中的复选框值从一个复选框复制到另一个复选框
我对Jquery比较新,并且在最后一天左右一直在努力解决这个问题。 我想做一些看似简单的事情,但我无法解决这个问题。 我有两个相同的复选框,包含许多条目,最终用户可以在任一复选框中选择多个选项。 如果选中了checkboxa中的值,我希望它立即在checkboxb中选择相同的值。 我研究了很多解决方案,我尝试过以下方法:
$(document).ready(function (){ $("#id_checkboxa").change(function() { $('#id_checkboxa input[type="checkbox"]:checked').each(function(){ $('#id_checkboxb input[type="checkbox"]').eq($(this).index()).prop('checked',true); }); }); });
我的HTML。 我正在使用Django模板和带有查询集的表单进行选择,这就是为什么我试图通过Jquery利用ID进行复选框操作。
{{ form.checkboxa }}
我通过在SO上引用以下代码片段找到了上面的方法。 将一组复选框的复选检查状态复制到另一个字段集
上面会将我在checkboxa中选择的第一个值复制到checkboxb的顶部,但就是这样。 我怀疑我需要遍历索引或创建一个数组来尝试查找已检查的值,但不能完全解决。 我当然希望使用JQUERY ID方法来解决这个问题。 提前感谢任何想法。
经过实验,我已经……
$(document).ready(function (){ $("#id_checkboxa").change(function() { console.log("Hello world!"); }); });
我的控制台将展示你好的世界!
当我尝试做类似……
$(document).ready(function (){ $("#id_checkboxa").change(function() { console.log("Hello world!"); let selectedValA = $(this).val(); let isAChecked = $(this).prop("checked"); $(`#id_checkboxb[value=${selectedValA}]`).prop("checked", isAChecked); }); });
我收到以下错误:
jquery.min.js:2 Uncaught Error: Syntax error, unrecognized expression: #id_checkboxb[value=] at Function.fb.error (jquery.min.js:2) at fb.tokenize (jquery.min.js:2) at fb.select (jquery.min.js:2) at Function.fb [as find] (jquery.min.js:2) at n.fn.init.find (jquery.min.js:2) at new n.fn.init (jquery.min.js:2) at n (jquery.min.js:2) at HTMLUListElement. ((index):85) at HTMLUListElement.dispatch (jquery.min.js:3) at HTMLUListElement.r.handle (jquery.min.js:3)
我从之前的实验中了解到,Djangoforms和JQuery有时候很难连接。 提前感谢任何其他想法。
如果我做以下……
$(document).ready(function (){ $("#id_checkboxa").change(function() { console.log("Hello world!"); let selectedValA = $(this).val(); let isAChecked = $(this).prop("checked"); $('#id_checkboxb input[type=checkbox]').prop('checked', true); }); });
我在checkboxa中选择复选框值时,会选中所有checkboxb值。 我试图获得我在checkboxa中选择的值以显示n checkboxb,而不是所有复选框。
我相信我知道你要做什么。 对于类来说这似乎更容易(按类名对复选框进行分组)
当单击带有checkboxA
类的复选框时,它还将选中带有checkboxA
类B的复选框,并且仅当复选框具有与checkboxB
相同的值时
$(document).ready(function() { $(".checkboxA").change(function() { let selectedValA = $(this).val(); let isAChecked = $(this).prop("checked"); // get a checkbox from the checkboxs with class "checkboxB" and have the same value as the checked checkboxA and set its checked prop to the same as checkboxA $(`.checkboxB[value=${selectedValA}]`).prop("checked", isAChecked); }); });
one two three four five
one two three four five
难道你不能简单地切换不是所选复选框的同一类的所有框吗?
$('.CbAB').off('change').on('change', function() { $('.CbAB').not(this).prop('checked', this.checked); });
A
B
由于我使用Django表单和模板,我不能轻易使用类。 利用上述建议以及大量研究。 我发现我需要使用输入名称而不是类或ID。 这是我的代码解决了我的问题。
$(document).ready(function() { $("[name=checkboxa]").change(function() { let selectedValA = $(this).val(); let isAChecked = $(this).prop("checked"); $(`[name=checkboxb][value="${selectedValA}"]`).prop("checked", isAChecked); }); }); });
您需要询问DOM并找出复选框的名称。 在上面的例子中,名称是checkboxa和checkboxb。 感谢所有帮助我来到这里的建议。