2011-11-06 202 views
0

我正在使用带Datepicker函数的jQuery UI插件来设置日期范围。在其页面上提供的示例(http://jqueryui.com/demos/datepicker/date-range.html)根据输入'id'设置范围;然而,我想设置基于'class'的范围作为我的表单'克隆'div来添加额外的输入,使'id'字段在每个克隆上都是唯一的。当我将JavaScript更改为使用'class'而不是'id'时,范围不再起作用。jQuery UI Datepicker日期范围

的JavaScript:

<script src="../../scripts/jquery-1.6.4.js"></script> 
<script src="../../scripts/jqueryui/ui/jquery.ui.core.js"></script> 
<script src="../../scripts/jqueryui/ui/jquery.ui.datepicker.js"></script> 
<script> 
     $(function() { 
      var dates = $(".start_date, .end_date").datepicker({ 
       onSelect: function(selectedDate) { 
        var option = this.class == "start_date" ? "minDate" : "maxDate", 
         instance = $(this).data("datepicker"), 
         date = $.datepicker.parseDate(
          instance.settings.dateFormat || 
          $.datepicker._defaults.dateFormat, 
          selectedDate, instance.settings); 
        dates.not(this).datepicker("option", option, date); 
       }  
      }); 
     }); 
</script> 

HTML:

<div> 
    <label> Start Date:</label> 
    <input type="text" name="start_date1" id="start_date1" class="start_date" /> 
</div> 
<div> 
    <label> End Date:</label> 
    <input type="text" name="end_date1" id="end_date1" class="end_date" /> 
</div> 
+0

您可能想详细说明日期范围“不再运作”的方式。是否有JavaScript错误?如果是这样,哪些错误?他们做错了什么吗?如果是这样,怎么样? – Pointy

回答

0

要检查,看看你的元素有一个类,这样做:

if ($(this).is('.start_date')) { 

if ($(this).hasClass('start_date')) { 

DOM元素属性的名称是“className”,而不是“class”(令人困惑)。此外,它会让你的代码变得脆弱,以检查类名是否等于某个字符串,因为你永远不知道是否需要添加另一个类(例如“required”)。因此,您应该始终使用jQuery或使用其他一些方法来检查对象是否有多个类的可能性。

另外你可能想看看Filament Group的date range picker的jQuery。