依赖于单选按钮选择的HTML Django条件语句

wxclj1h5  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(90)

我正在开发一个考勤系统,教师可以将学生标记为“出席”、“缺席”或“迟到”,但只有在学生被标记为“缺席”或“迟到”时,他们才能输入注解。我想在选择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表单。
如有任何帮助,我们将不胜感激。

mv1qrgav

mv1qrgav1#

你不能使用django模板语言条件来检查用户的单选按钮选择。为了实现你想要的,你需要JavaScript,并在默认情况下隐藏评论字段,并在选择考勤字段时显示。
它可能看起来像;

$(document).ready(function () {
    toggleFields(); // call this first so we start out with the correct visibility depending on the selected form values
    // this will call our toggleFields function every time the selection value of the attendance type field changes
    $(".attendancetype-class").change(function () {
        toggleFields();
    });

});
// this toggles the visibility of comment
function toggleFields() {
    if ($(".attendancetype-class").checked)
        $("#comment").show();
    else
        $("#comment").hide();
}

字符串
尽管您在默认情况下设置了“Present”单选按钮,但注解字段将始终可见,因为单选按钮在默认情况下处于选中状态。您还需要某种选择器,允许您在JavaScript中获得任何单选按钮。也许一个类?
我也建议使用Django表单来实现这一点。这带来了很多好处,但特别是在这里,它将允许您运行验证,以确保在提供注解时完成考勤字段。
同样值得注意的是,保持模板尽可能简单并避免模板中的逻辑是一个很好的实践。当我看到包含if/elsefor循环时,我想到了这一点。尽管checkonattendance类型似乎是默认的检查(你可以通过使用django表单来避免这一切)。如果你在视图中创建了这个可迭代对象,并且你知道第一个项是“Present”,你可以像这样检查它;

{% for attendanceType in list_of_attendanceTypes %}
    <input type="radio" name='{{student.ssystudentid}}_attendancetype'
           id='{{student.ssystudentid}}{{attendanceType}}'
           value={{attendanceType.attendancetypeid}}
           {% if forloop.first %}checked="checked"{% endif %}>


for模板标签的文档在这里。

相关问题