Django如何在模板中获取Javascript中CheckboxSelectMultiple的值

k2fxgqgv  于 2023-05-21  发布在  Java
关注(0)|答案(2)|浏览(210)

我有一个CheckboxSelectMultiple在Django的表单中,如下所示:

forms.py

LIST= [
  ('Oranges', 'Oranges'),
  ('Cantaloupes', 'Cantaloupes')
]

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

我想得到的复选框值,每次其中一个是有选择/未选择填充表单(电子邮件)的另一个字段。
这是我到目前为止得到的,但我无法检索chekboxes值:

template.py

<script>
  $(function(){
    $('#id_testrever').change(function(){
      var a = $("#id_email").val();
      
      if ($("#id_testrever").val() == "Oranges")
        $("input[name=email]").val(a + "Oranges")
        
      if ($("#id_testrever").val() == "Mangoes")
        $("input[name=email]").val(a + " Mangoes")
    });
  });
</script>
sq1bmfud

sq1bmfud1#

如果你使用的是MultipleChoiceField,那么你的每个复选框都会有一个带后缀的ID,其中包含每个复选框的索引。所以要获取选中复选框的值,你必须获取所有选中的复选框,你可以像这样访问id:

$('#id_testrever_0').val() // value of first checkbox
$('#id_testrever_1').val() // value of second checkbox

或者,如果你想选中所有的复选框并获取它们的值,而不是一次只选中一个,你可以这样做

let selectedValues = [];
$("input:checkbox[name=testrever]").on("change", function() {
  $("input:checkbox[name=testrever]:checked").each(function(){
    selectedValues.push($(this).val());
  });
  console.log(selectedValues);
});

在上面的代码中,您可以访问**selectedValues**数组中的值。
您的最终代码将如下所示

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

  var a = $("#id_email").val();

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

    let testrever = $(this).val();

    if (testrever == "Oranges")
      $("input[name=email]").val(a + "Oranges")

    if (testrever == "Mangoes")
      $("input[name=email]").val(a + " Mangoes")

  });
});
cotxawn7

cotxawn72#

你可以创建一个选择器来选择类型下的checkboxes,所以:

$('#id_testrever input:checkbox')

这将返回所有复选框。您可以通过以下方式获取所有选中的:

$('#id_testrever input:checkbox:checked')

因此,例如,您可以使用以下命令获取选中复选框的值列表:

$('#id_testrever input:checkbox:checked').map(function() {
    return this.value;
});

相关问题