django 自动检查我是否将它保存到数据库

这是我的 html:


<input type="checkbox" value="1" name="Visual" id="visual">

<input type="checkbox" value="1" name="Tuberculosis" id="Tuberculosis">

<input type="checkbox" value="1" name="Skin" id="Skin">


<script type="text/javascript">

$('#checkbox-value').text($('#checkbox1').val());


$("#checkbox1").on('change', function() {

  if ($(this).is(':checked')) {

    $(this).attr('value', 'true');

  } else {

    $(this).attr('value', 'false');

  }


  $('#checkbox-value').text($('#checkbox1').val());

});

</script>

这是我的观点:


Visual = request.POST['Visual']

Tuberculosis = request.POST['Tuberculosis']

Skin = request.POST['Skin']

V_insert_data = StudentUserMedicalRecord(

    Visual=Visual,

    Tuberculosis=Tuberculosis,

    Skin=Skin

)

V_insert_data.save(

每一次为什么我将数据保存到我的数据库,在Visual,Tuberculosis并Skin自动检查,即使我没有检查它,当我保存它?或者我认为我的 javascript 是错误的?


慕标5832272
浏览 233回答 3
3回答

缥缈止盈

你不需要$('#checkbox-value').text($('#checkbox1').val());,除非你在页面上有你没有向我们展示的元素。您不能在同一页面上定义多个具有相同 id 的元素。&nbsp;(同样适用于name属性)。使用不同的 id,如我的代码所示,并按类/名称匹配 chekboxes。不要把value="1"你的复选框。将您的 jQuery 代码放在 a 中$(function() { });,它是$( document ).ready().&nbsp;更多信息在这里。不要使用裸request.POST值,self.cleaned_data['var_name']而是使用经过消毒的值。我认为使用大写字母的参数名称不是一个好主意(这只是一个注释,它不会影响功能)。根据 Python 的PEP 8,只有类应该以大写字母开头。前端:<input type="checkbox" name="Visual" id="checkbox1" class="checkbox-js-trigger-class"><input type="checkbox" name="Tuberculosis" id="checkbox2" class="checkbox-js-trigger-class"><input type="checkbox" name="Skin" id="checkbox3" class="checkbox-js-trigger-class"><script type="text/javascript">$(function() {&nbsp; &nbsp; &nbsp; $(".checkbox-js-trigger-class").on("change", function(){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var new_val = $(this).is(':checked') ? 1 : 0;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $(this).val(new_val);&nbsp; &nbsp; &nbsp; });});</script>后端:最好使用Model Form:class StudentUserMedicalRecordForm(ModelForm):&nbsp; &nbsp; class Meta:&nbsp; &nbsp; &nbsp; &nbsp; model = StudentUserMedicalRecord&nbsp; &nbsp; &nbsp; &nbsp; fields = ['Visual', 'Tuberculosis', 'Skin']

蝴蝶刀刀

复选框输入实际上有点奇怪,并且与您认为它们的工作方式不同。当复选框被更改时,您不需要 jQuery 来处理这种情况。浏览器和 HTML 会为您处理。(有点像当用户专注于 input type="text" 以使字母显示在文本框中时,您不需要监听按下的键。)相反,如果用户选中复选框,则输入将具有一个名为已选中的属性。它看起来像这样。复选框输入标签还有另外两个属性名称和值。这些是提交表单时发送到服务器的内容。但它只发送选中复选框的名称和值对!对于未选中的复选框,它不发送任何内容。因此,如果每个复选框都有一个名称和值,您可以将其视为一个键值对。如果选中该复选框,它将向服务器发送 key=value。如果将名称指定为数组的名称,则允许单个键具有多个值。所以想象一下你有一个这样的表格:<input type="checkbox" name="disease[]" value="tuberculosis" checked><input type="checkbox" name="disease[]" value="chickenpox" checked><input type="checkbox" name="disease[]" value="smallpox"><input type="checkbox" name="needs_medicine" value="true" checked><input type="checkbox" name="recovered" value="whatevervalue">提交该表单后,服务器将收到类似“disease=[tuberculosis,chickenpox]&needs_medicine=true”的信息请注意,天花和恢复没有提及,因为它们没有被检查。另请注意,将什么作为不是多选复选框的复选框的值(在本例中为需要医学)并不是非常重要,因为发送到服务器的值将始终是复选框的值(在在这种情况下,字符串“true”)。

侃侃尔雅

因为你有"1"在这里给出的默认值<input&nbsp;type="checkbox"&nbsp;value="1"&nbsp;name="Visual"&nbsp;id="visual">而且您的脚本中也没有引用id = "checkbox1"或id = "checkbox-value"引用的元素。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript