我正在开发一个考勤系统,教师可以将学生标记为“出席”、“缺席”或“迟到”,但只有在学生被标记为“缺席”或“迟到”时,他们才能输入注解。我想在选择Present时输入注解文本disabled
。我尝试了不同的if语句与<input type="text" name='{{student.ssystudentid}}_comment' id="comment" maxlength="100">
,但似乎没有工作。下面是我的代码和页面截图。
<form action="{% url 'attendance:submitAttendance' %}" method="post" name="fullForm">
{% csrf_token %}
<table>
<tr>
<th>Student Name</th>
<th>P/A/L</th>
<th>Comment</th>
</tr>
{% for student in list_of_students %}
<tr>
<td>{{student}}</td>
<td>
<div class="radio-button">
{% for attendanceType in list_of_attendanceTypes %}
{% if attendanceType.attendancetype == "Present" %}
<input type="radio" name='{{student.ssystudentid}}_attendancetype' id='{{student.ssystudentid}}{{attendanceType}}' value={{attendanceType.attendancetypeid}} checked="checked">
<label for='{{student.ssystudentid}}{{attendanceType}}'> {{attendanceType}}</label>
{% else %}
<input type="radio" name='{{student.ssystudentid}}_attendancetype' id='{{student.ssystudentid}}{{attendanceType}}' value={{attendanceType.attendancetypeid}}>
<label for='{{student.ssystudentid}}{{attendanceType}}'> {{attendanceType}}</label>
{% endif %}
{% endfor %}
</div>
</td>
<td>
<input type="text" name='{{student.ssystudentid}}_comment' id="comment" maxlength="100">
</td>
</tr>
{% endfor %}
</table>
<input type = "submit" value = "Save Attendance"/>
</form>[![enter image description here][1]][1]
字符串
请注意,我没有使用Django表单。
如有任何帮助,我们将不胜感激。
1条答案
按热度按时间mv1qrgav1#
你不能使用django模板语言条件来检查用户的单选按钮选择。为了实现你想要的,你需要JavaScript,并在默认情况下隐藏评论字段,并在选择考勤字段时显示。
它可能看起来像;
字符串
尽管您在默认情况下设置了“Present”单选按钮,但注解字段将始终可见,因为单选按钮在默认情况下处于选中状态。您还需要某种选择器,允许您在JavaScript中获得任何单选按钮。也许一个类?
我也建议使用Django表单来实现这一点。这带来了很多好处,但特别是在这里,它将允许您运行验证,以确保在提供注解时完成考勤字段。
同样值得注意的是,保持模板尽可能简单并避免模板中的逻辑是一个很好的实践。当我看到包含
if/else
的for
循环时,我想到了这一点。尽管checkonattendance类型似乎是默认的检查(你可以通过使用django表单来避免这一切)。如果你在视图中创建了这个可迭代对象,并且你知道第一个项是“Present”,你可以像这样检查它;型
for
模板标签的文档在这里。