返回

javascript-如果select2为空,则将输入字段设为必填

发布时间:2022-05-11 21:55:04 367
# 前端

我有一个文本字段和一个 select2 字段。用户可以在输入字段中输入内容,但也可以从 select2 字段中选择预定义的选项。

我想做以下事情:如果选择了select2,则表单通过,如果没有,则需要输入字段并且表单无法通过。

我已经在后端(Django)中创建了一个逻辑,将 select2 的值复制到文本字段中,以确保所有数据都有效,但是如果我在没有验证的情况下离开前端,用户可以将所有内容留空并提交一个空的形式。

这是我的html:

<table id="myTable" class="table order-list">
    <thead>
        <tr>
            <td>Médicament</td>
            <td>Dosage</td>
            <td>Posologie</td>
            <td>Durée</td>
            <td></td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td class="col-5">
                <div class="row">
                    <div class="col-6">
                        <input class="form-control mb-4" placeholder="Nom du médicament" type="text" name="medicament0">
                    </div>
                    <div class="col-6">
                        <div class="form-group">
                            <select class="form-control select2-show-search form-select" id="medicament-id0" name="listemedicament0">
                                <option value="0">Ou choisir de la liste</option>
                                {% for d in drugs %}   
                                    <option value="{{ d.id }}">{{ d }}</option>
                                {% endfor %}
                            </select>
                        </div>
                    </div>
                    
                </div>
            </td>

            <td>
                <input class="form-control mb-4" placeholder="20mg" type="text" name="dosage0">
            </td>

            <td>
                <input class="form-control mb-4" placeholder="2 / j avant repas" type="text" name="posologie0">
            </td>

            <td>
                <input class="form-control mb-4" placeholder="7 jours" type="text" name="duree0">
            </td>

            <td><a class="deleteRow"></a>
                <input type="button" class="btn btn-lg btn-secondary " id="addrow" value="Ajouter élément" />
            </td>

        </tr>
    </tbody>
    
</table>

如果用户想要提交多个条目,我也有这个 javascript 添加动态行:

<script>
    $(document).ready(function () {
        var counter = 1;
    
        $("#addrow").on("click", function () {
            var newRow = $("<tr>");
            var cols = "";
            cols += '<td class="col-5"><div class="row"><div class="col-6">' +
                    '<input class="form-control medic-field mb-4" placeholder="Nom du médicament" type="text" name="medicament'+ counter +'">' +
                    '</div><div class="col-6"> <div class="form-group">' +
                    '<select class="form-control select2-show-search form-select" id="medicament-id0" name="listemedicament'+ counter +'">' +
                    '<option value="0">Ou choisir de la liste</option> {% for d in drugs %} <option value="{{ d.id }}">{{ d }}</option>' +
                    '{% endfor %} </select> </div></div></div>' +
                    '</td>' +
                    '<td><input class="form-control mb-4" placeholder="20mg" type="text" name="dosage'+ counter +'"></td>' +
                    '<td><input class="form-control mb-4" placeholder="2 / j avant repas" type="text" name="posologie'+ counter +'"></td>' +
                    '<td><input class="form-control mb-4" placeholder="7 jours" type="text" name="duree'+ counter +'"></td>' +
                    '<td><a href="javascript:void(0);"><i class="ibtnDel fa fa-2x fa-close" style="color: red;"></i></a></td>';
            newRow.append(cols);
            $("table.order-list").append(newRow);
            
            //Initialize Select2 Elements
            $('.select2-show-search').select2();
            $("table.order-list").append('<input type="hidden" name="counter" value="' + counter + '"/>');
            counter++;
        });
    
    
    
        $("table.order-list").on("click", ".ibtnDel", function (event) {
            $(this).closest("tr").remove();       
            counter -= 1
        });
    
    
    });
</script>

这是两个字段:

<input class="form-control mb-4" placeholder="Nom du médicament" type="text" name="medicament0">
...
<select class="form-control select2-show-search form-select" id="medicament-id0" name="listemedicament0">
    <option value="0">Ou choisir de la liste</option>
    {% for d in drugs %}   
        <option value="{{ d.id }}">{{ d }}</option>
    {% endfor %}
</select>

所以我的问题是如果我将输入(id medicament-id0)留空,并且选择字段不为空,则表单将通过,如果选择字段为空,则应该需要输入。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像