我在Django中有一个表单的复选框:

testrever = forms.MultipleChoiceField(required=False,widget=forms.widgets.CheckboxSelectMultiple())

我只想返回最后选中的.change事件复选框的ID(然后是值),当它被选中时(当它被取消选中时,我不希望发生任何事情).

我设法做到了这一点(多亏了这个答案):

Django How to get value of CheckboxSelectMultiple in Javascript in Template

$('#id_testrever_0').on("change", function() {
    var testrever =[]
    var a = $("#id_email").val();
    if ($('#id_testrever_0').is(':checked')) {
        testrever = $('#id_testrever_0').val();
        $("input[name=email]").val(a + testrever)
    }
})
    $('#id_testrever_1').on("change", function() {
    var testrever =[]
    var a = $("#id_email").val();
    if ($('#id_testrever_1').is(':checked')) {
        testrever = $('#id_testrever_1').val();
        $("input[name=email]").val(a + testrever)
    }
})

但我想以一种更优雅的方式来实现它,以最大限度地减少代码长度,避免重复.

也许是通过使用

$("input:checkbox[name=testrever]").on("change", function() 

  $("input:checkbox[name=testrever]:checked").each(function()

如果可能的话.

推荐答案

我不完全相信我完全理解你想要什么.但是,如果要在复选框值被选中的情况下追加值#id_email,则可以使用:

$('#id_testrever input:checkbox').on('change', function() {
    if(this.checked) {
        const element = $('#id_email');
        element.val(element.val() + this.value);
    }
});

Javascript相关问答推荐

如何用变量productId替换 1"

为什么在集内和集外会产生不同的promise 状态(使用Promise.race)?

用相器进行向内碰撞检测

获取加载失败:获取[.]添加时try 将文档添加到Firerestore,Nuxt 3

如何在JavaScript中在文本内容中添加新行

当promise 在拒绝处理程序被锁定之前被拒绝时,为什么我们会得到未捕获的错误?

GrapeJS -如何保存和加载自定义页面

如何用显示网格平滑地将元素从一个地方移动到另一个地方?

如何解决chrome—extension代码中的错误,它会实时覆盖google—meet的面部图像?'

数字时钟在JavaScript中不动态更新

v—自动完成不显示 Select 列表中的所有项目

我怎么才能得到Kotlin的密文?

将核心模块导入另一个组件模块时存在多个主题

覆盖TypeScrip中的Lit-Element子类的属性类型

Reaction Redux&Quot;在派单错误中检测到状态Mutations

为什么延迟在我的laravel项目中不起作用?

对具有相似属性的对象数组进行分组,并使用串连的值获得结果

如何使用Astro优化大图像?

重新呈现-react -筛选数据过多

用Reaction-RT-Chart创建实时条形图