【问题标题】:Remove default option onChange event of selected select element?删除所选选择元素的默认选项 onChange 事件?
【发布时间】:2016-12-07 20:43:45
【问题描述】:

我在一个表单上有两个 HTML 选择元素。在当前设置中,两个选择的 默认选项 都是从数据库中读取的。

当所选项目在SELECT中更改时,我要从该选择元素中删除默认选项,而不是其他元素。

目前的问题是,当我在一个 Select 中更改所选项目时,默认选项会从 both Selects 中删除。仅应将其从触发更改事件的控件中删除。

我也尝试在每个独立更改事件上使用$('option:selected', this).remove();。但是此代码会在每次更改时从选择中删除一个项目。用例只需要删除默认选项。

如何删除只有 selected 选择元素的默认选项?

所以我在标记中定义了两个选择元素,ID 分别为 EventNameStatus

                                <!-- SELECT STATUS STATIC-->
                                <div class="form-group">
                                    <label class="col-md-9 control-label" style="text-align: left;" for="Current Status">Current Status</label>
                                    <div class="col-md-4">
                                        <select id="Status" name="Status" style="width:165px;" class="btn btn-default">
                                            @foreach (Models.RecStatus status in Model.Status)
                                            {
                                                <option value="@status.RecStatus">@status.RecStatus</option>
                                            }
                                        </select>
                                    </div>
                                </div>


                                <!-- SELECT EVENT STATIC-->
                                <div class="form-group">
                                    <label class="col-md-9 control-label" style="text-align: left;" for="Event">Event</label>
                                    <div class="col-md-4">
                                        <select id="EventName" name="EventName" style="width:165px;" class="btn btn-default">
                                            @foreach (Models.RecEvent eventType in Model.Event)
                                            {
                                                <option value="@eventType.EventType">@eventType.EventType</option>
                                            }
                                        </select>
                                    </div>
                                </div>  


//Remove the extra default Event and Status select elements
//onChange
$('#EventName').on('change', function() {
    //$('option:selected', this).remove();
    $("#defaultOption").remove();
});



$('#Status').on('change', function() {
    //$('option:selected', this).remove();
    $("#defaultOption").remove();
});

【问题讨论】:

    标签: jquery html jquery-selectors html-select


    【解决方案1】:

    您可以根据它们的值删除它们

    $('#EventName').one('change', function() {
        $(this).find("option[value='']").remove();
    }
    

    或者你可以删除最后一个选项

    $('#EventName').one('change', function() {
        $(this).find('option:last').remove();
    }
    

    【讨论】:

    • 默认值因记录而异,因此在这种情况下我无法根据值删除。
    • 他们总是第一个&lt;option&gt;吗?查看我的编辑
    • 默认选项总是转到选择列表中的最后一项并设置为默认值。我只想删除第一个更改事件的默认最后一个选项。后续更改事件不应从选择列表中删除任何内容。
    • 啊,好吧..坚持住
    • 看看我的编辑,我把first改成了last,把.on()改成了.one(),这只会绑定一次事件,第一次修改后会解绑跨度>
    猜你喜欢
    • 2017-07-20
    • 1970-01-01
    • 2015-07-26
    • 2015-11-15
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    相关资源
    最近更新 更多