【问题标题】:How to set default "Select" option in three date dropdowns(for year, month and day) in following scenario?在以下情况下,如何在三个日期下拉菜单(年、月和日)中设置默认的“选择”选项?
【发布时间】:2014-07-16 05:19:47
【问题描述】:

我在我的网站上使用三个单独的下拉菜单(三个 HTML 选择控件)来获取用户的出生日期。为了让这件事起作用,我使用了一个名为 jquery.dateLists.min.js 的 jquery 库。我正在使用 jquery-1.9.1.min.jsjquery-ui-1.10.0.custom.min.js

现在我的问题是当页面加载时,日期下拉列表选择了当前日期值,飞蛾 dropdowm 选择了当前月份,年份下拉列表选择了包含的年份中的第一年(目前是 1914 年) .我想将值为“”的“选择”项设置为默认选定值。我应该如何实现这一目标?供您参考,我将库代码及其 HTML 实现放在下面。

jquery.dateLists.min.js

/*
 * jQuery dateDropDowns
 *
 * url      http://www.amdonnelly.co.uk/jquery/date-drop-down-lists
 * author   Alan Donnelly 2011
 * version  1.0.1
 * license  MIT and GPL licenses
 */
(function(a){a.fn.dateDropDowns=function(k){var g={dateFormat:"dd-mm-yy",monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],yearStart:"1914",yearEnd:"2000"},k=a.extend(g,k);return this.each(function(){function l(){var c=d.getMonth()+1,p="",f=1;_daysInMonth=m(c,d.getFullYear())+1;a("#"+e+"_list").children().length<_daysInMonth?f=a("#"+e+"_list").children().length+1:a("#"+e+"_list").children().remove();for(_x=f;_x<_daysInMonth;_x++)c=d.getDate()==_x?"selected='true'": "",p+="<option value='"+_x+"' "+c+">"+_x+"</option>";a("#"+e+"_list").append(p)}function m(c,a){var d=31;c==4||c==6||c==9||c==11?d=30:c==2&&(d=a%4==0?29:28);return d}function n(){var c=d.getDate(),a=d.getMonth()+1,f=d.getFullYear(),b=g.dateFormat;b.indexOf("DD")>-1&&c.toString().length<2&&(c="0"+c);b.indexOf("MM")>-1&&a.toString().length<2&&(a="0"+a);b=g.dateFormat.toLowerCase();b=b.replace("dd",c);b=b.replace("mm",a);b=b.replace("yy",f);j.val(b)}var j=a(this);j.html();var b=j.attr("id")+"_dateLists", e=b+"_day",h=b+"_month",i=b+"_year",k=j.val(),d=new Date,o=g.dateFormat.indexOf("/")>-1?"/":"-";(function(){if(k.length>0){var a=g.dateFormat.split(o),b=k.split(o),f=new Date;for(_x=0;_x<b.length;_x++)a[_x].toLowerCase().indexOf("d")>-1?f.setDate(b[_x]):a[_x].toLowerCase().indexOf("m")>-1?f.setMonth(b[_x]-1):a[_x].toLowerCase().indexOf("y")>-1&&f.setYear(b[_x]);d=f}})();(function(){var c=g.dateFormat.split(o),d=j;j.replaceWith("<div id='"+b+"' class='dateLists_container'></div>");for(_x=0;_x<c.length;_x++)c[_x].toLowerCase().indexOf("d")> -1?(a("#"+b).append("<div id='"+e+"' class='day_container'>"),a("#"+e).append("<select id='"+e+"_list' name='"+e+"_list' class='list'></select>"),a("#"+b).append("</div>")):c[_x].toLowerCase().indexOf("m")>-1?(a("#"+b).append("<div id='"+h+"' class='month_container'>"),a("#"+h).append("<select id='"+h+"_list' name='"+h+"_list' class='list'></select>"),a("#"+b).append("</div>")):c[_x].toLowerCase().indexOf("y")>-1&&(a("#"+b).append("<div id='"+i+"' class='year_container'>"),a("#"+i).append("<select id='"+ i+"_list' name='"+i+"_list' class='list'></select>"),a("#"+b).append("</div>"));a("#"+b).append(d);j.hide()})();l();(function(){a("#"+h+"_list").children().remove();for(_x=0;_x<12;_x++){var c=d.getMonth()==_x?"selected='true'":"";a("#"+h+"_list").append("<option value='"+_x+"' "+c+">"+g.monthNames[_x]+"</option>")}})();(function(){a("#"+i+"_list").children().remove();for(_x=parseInt(g.yearStart);_x<parseInt(g.yearEnd)+1;_x++){var c=d.getFullYear()==_x?"selected='true'":"";a("#"+i+"_list").append("<option value='"+ _x+"' "+c+">"+_x+"</option>")}})();(function(){a("#"+e+"_list").change(function(){d.setDate(a("#"+e+"_list").val());n()});a("#"+h+"_list").change(function(){var c=parseInt(a("#"+h+"_list").val()),b=d.getDate();_daysInMonth=m(c+1,d.getFullYear());b>_daysInMonth&&(b=_daysInMonth);d=new Date(d.getFullYear(),c,b,0,0,0,0);l();n()});a("#"+i+"_list").change(function(){var b=a("#"+i+"_list").val(),e=d.getDate(),f=d.getMonth();_daysInMonth=m(f+1,b);e>_daysInMonth&&(e=_daysInMonth);d=new Date(b,f,e,0,0,0,0); l();n()})})()})}})(jQuery);

实现如下(上面说的所有需要​​的jQuery库都已经包含了。)

<script language="javascript">
/*The jQuery code to work the functionality*/
$().ready(function() {  
  $('#dob').dateDropDowns({dateFormat:'yy-mm-dd'});  
});
</script>

<style type="text/css">

  .dateLists_container {
  }

  .dateLists_container .list {
    float:left;
  }

  .dateLists_container .day_container {

  }

  .dateLists_container .day_container .list {
    margin-right:10px;
  }

  .dateLists_container .month_container {
  }

  .dateLists_container .month_container .list {
    margin-right:10px;
    margin-left:10px;
  }

  .dateLists_container .year_container{

  }

  .dateLists_container .year_container .list{

  }

</style>

<div class="col-xs-6">
  <label for="name" class="col-lg-6">Date of Birth<span style="color:#FF0000">*</span></label>
  <div class="col-lg-6">
    <input class="form-control date_control" type="text" name="dob" id="dob" value="">
  </div>
</div>

如果您想查看功能演示,请访问以下网址:

http://www.amdonnelly.co.uk/jquery/date-drop-down-lists

有人可以在这方面帮助我吗?提前致谢。

【问题讨论】:

  • 只给我们看相关代码,我们真的不需要css和这里粘贴的插件源。向我们展示您的代码?也许准备一个小提琴,这样我们就可以看到问题了。
  • @DimitarDimitrov:我添加了负责使日期选择器工作的 jQuery 代码。为您提供库代码的唯一目的是他们实现的一切,例如仅通过此文件设置月份、年份范围、日期、验证等。我浏览了文件,但默认情况下无法设置“选择”选项。如果不使用 CSS,您将无法显示下拉菜单。如果排除 css,它将只是一个输入字段。

标签: javascript jquery html date datepicker


【解决方案1】:

我认为您正在寻找的内容类似于:

    $('#listid').prepend("<option>Select</option>");
    $('#listid').prop("selected", true);

这将在列表的开头添加一个新选项并选择它,但它会破坏插件。

如果你还在用,我把旧源码捞出来上传了https://github.com/amdonnelly/jQuery-Date-List-Plugin

如果我有时间,我会尝试为默认消息添加一个选项。

【讨论】:

    【解决方案2】:
             $("#sub2sub").append("<option value='0'>--Select--</option>");
    
        var drop = $("#sub2cate");
        drop[0].selectedIndex = 0;
    <tr>
    
                            <td>
                                <select id="sub2sub" style="width: 144px;">
    
                                </select>
                          </td>
                        </tr>
    

    【讨论】:

      【解决方案3】:

      您需要使用 Javascript 获取当前日期,并在页面加载时将其设置为选项值,并在 OPTION 中将其设置为“已选择”。

      试试这个

         var current_date = new Date();
         var dd = current_date.getDate(); // day
         var MM = current_date.getMonth(); // month
         var yyyy = current_date.getFullYear(); //year
      

      【讨论】:

      • :你没有得到我的重点朋友。我不想将当前日期显示为默认日期。我想将所有三个下拉菜单的“选择”值显示为默认值。
      • 要将值设置为默认值,您可以使用
      • :但是为了使其默认选中,它应该已经存在于选择控件中,这在我的情况下不是。那么如何将默认值设置为“选择”?
      • 尝试附加
      • @Sweetz:但是怎么做呢?你能告诉我如何追加吗?
      猜你喜欢
      • 2016-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-14
      相关资源
      最近更新 更多