我有一个表格:
class InspectionReportForm(forms.ModelForm):
class Meta:
model = InspectionReport
fields = ('Date', 'Comment', 'Signature')
labels = {"Date": "Date (YYYY-MM-DD)"}
def __init__(self, *args, **kwargs):
super(InspectionReportForm, self).__init__(*args, **kwargs)
self.fields["Comment"].widget = forms.HiddenInput()
self.fields["Date"].widget = forms.HiddenInput()
self.fields["Signature"].widget = forms.HiddenInput()
除了日期和谁写报告之外,它还存储报告。
在"通过"或"失败"报告的情况下。我想在报告中有一个通用评论,所以这将被自动填充,这就是我隐藏此字段的原因。日期和签名将从提交之日起进行,签名将是登录用户。所以大部分都是自动填充的。
但是,我有一个"也许"选项,它会提示用户发表评论并提交该评论而不是通用评论。
我的问题是如何从项目的HTML模板/Javascript阶段更改表单的注释值?
我当前的代码如下:
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<center><button type="button" id="pass">Pass</button>
<button type="button" id="fail">Fail</button>
<button type="button" id="check" class="collapsible">Check</button>
<div class="content"> Comment: <input type="text" name ="comments">
<button id="submitCheck">Submit</button>
</div>
</center>
Check
按钮只是一个可折叠的容器,它有一个输入框和一个用于"也许"选项的提交按钮。
就Javascript而言,我真的一无所有,因为我无法直接从这里更改字段值。我尝试过选择带有{%for field in form%}
字段,但没有运气
您可以使用 javascript 执行将comment
字段的内容复制到隐藏Comment
字段中的"肮脏技巧":
$("input[name=comments]").on("change", function(){
$("input[name=Comment]").val($(this).val());
})
或者,我认为更好的方法,不要使用{{ form.as_p }}
而是单独呈现字段,以便您可以直接在可折叠对象中渲染{{ form.Comment }}
字段。然后你不必在javascript中做任何事情。您可以像这样呈现字段的标签、字段本身和字段错误:
{{ form.Date.label_tag }}
{{ form.Date }}
{{ form.Date.errors }}