javascript - onClick 后清除下拉值吗?

标签 javascript jquery html html-select

我有时间值的下拉列表。如果我点击下拉菜单,我想重置我的下拉菜单。每次我单击下拉列表时,我当前的代码都会给我一组新的值。我也尝试使用 .empty() 但这不起作用。这是我的 HTML:

<td>
    <select name="stime" id="stime">
       <option value="0">--Select start time--</option>
    </select>
</td>

这是我的 JQuery:

    $j('#stime').on('click', function() {
        //Populate start time dropdown with values 
        for(var i=700; i<= 1700; i+=15){
            var mins = i % 100;
            var hours = parseInt(i/100);

            if (mins > 45) {
                mins = 0;
                hours += 1;
                i = hours * 100;
            }

            var AmPm = " AM";
            //set hours 12 to PM
            if(hours == 12){
               AmPm = " PM";
            }

        //format all hours greater than to PM
        if (hours > 12) {
            hours = hours - 12;
            AmPm = " PM";
        }

        $j('#stime').children().not(":first").empty();

        //populate stime with values
        $j('#stime').append('<option value="'+('0' + (hours)).slice(-2)+':'+('0' + mins).slice(-2)+AmPm+'">'+('0' + (hours)).slice(-2)+':'+('0' + mins).slice(-2)+AmPm+' </option>');
    }    
 });

我当前的代码给了我一个空白的下拉菜单,每次我单击下拉框后我都可以看到滚动条变得越来越小,这告诉我值从未被删除。如果有人可以帮助解决这个问题,请告诉我。谢谢。

最佳答案

将此添加到函数声明的右侧

$("#stime option:gt(0)").remove();

喜欢

$j('#stime').on('点击', function() { $j("#stime option:gt(0)").remove();

...

并删除此行

$j('#stime').children().not(":first").empty();

上面的行位于 for 循环内,它使所有项目成为空字符串。

关于javascript - onClick 后清除下拉值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36987117/

相关文章:

html - 如何在不指定宽度的情况下防止嵌套元素换行

javascript - Angular .js :13294 Error: [$injector:unpr] Unknown provider: cityResourceProvider <- cityResource <- cityListCtrl

javascript - HTML 页面看不到 AngularJS 模块

javascript - 将数据从 C# 传递到 Angular JS html

javascript - 不直观的 removeClass() 问题

jquery - 垂直设置自动完成列表项

javascript - Typeahead.js - 特殊字符返回为 "&#230;"等

javascript - Angular 和代码镜像

javascript - Backbone.js - 无法触发集合中的事件

javascript - promise 似乎永远无法兑现