Mar*_*lak 7 jquery jquery-ui datepicker
我试图使Jquery-UI datepicker每月只有1个可用日期,这是每个月的第1个,当选择所选日期+ X天时,应该复制到另一个文本输入字段.
此外,要添加的天数值会随着下拉列表中选择的内容而变化.
弄到目前为止我所拥有的:http: //jsfiddle.net/8y4Bf/
来自小提琴的代码:
HTML
<div>
<label>Select an Option:</label>
<select id="select1">
<option value="" disabled="disabled" selected="selected">Select an option</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
</div>
<br /><br />
<div>
<label>Start Date:</label>
<input type="text" id="startdate" />
<br /><br />
<label>End Date:</label>
<input type="text" id="enddate" />
</div>
Run Code Online (Sandbox Code Playgroud)
jQuery的
$('#select1').change(function() {
$('#startdate, #enddate').val("");
if ($('#select1').val() == '1') {
$('#startdate').datepicker({
showButtonPanel: true,
closeText: 'Close',
dateFormat: "mm/dd/yy",
onSelect: function(selected) {
if (this.id == 'startdate') {
// Parameters 1 day only & also copy result into enddate + 5 days
}
}
});
}
else if ($('#select1').val() == '2') {
$('#startdate').datepicker({
showButtonPanel: true,
closeText: 'Close',
dateFormat: "mm/dd/yy",
onSelect: function(selected) {
if (this.id == 'startdate') {
// Parameters 1 day only & also copy result into enddate + 7 days
}
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
我已经阅读了http://jqueryui.com/datepicker/#min-max上的文档,但无法弄清楚如何才能使每个月的第1天可用.
我是否必须#startdate再次获取值,添加日期然后将其粘贴到#enddate某个地方,或者将值保存在某处,以便我可以从那里开始?
Osc*_*car 10
我改变了你的逻辑jsfiddle.
只是要知道,为了达到你所需要的,datepicker必须实现beforeShowDay function到override将要显示的日期component,然后date必须将所选的转换为一种Date object类型,以便轻松添加5或7天(以正确的方式,因为,例如,如果你想选择每个月的最后一天,可以是30或31加5或7天,如果你手动完成,你会得到36或38而不是date另一个月,还有很多其他的可能性-但这不是你的情况,我只是在解释).
我也改进了code,看看:
jQuery代码:
$(function() {
var extraDays = 0;
var combobox = $('#select1');
var txtStartDate = $('#startdate');
var txtEndDate = $('#enddate');
var inputs = txtStartDate.add(txtEndDate);
combobox.on('change', function() {
inputs.val('');
var val = $(this).val();
if(val == 1) extraDays = 5;
if(val == 2) extraDays = 7;
txtStartDate.datepicker({
showButtonPanel: true,
closeText: 'Close',
dateFormat: 'mm/dd/yy',
beforeShowDay: function(date) {
/* Check for the first day */
if (date.getDate() == 1) { return [true, '']; }
else { return [false, '', 'Unavailable']; }
},
onSelect: function(selected) {
/* Add extra days to the date according to 'combobox' selection */
var endDate = new Date(selected);
endDate.setDate(endDate.getDate() + extraDays);
var m = pad(endDate.getMonth() + 1, 2);
var d = pad(endDate.getDate(), 2);
var y = endDate.getFullYear();
var endDateStr = [m, d, y].join('/');
txtEndDate.val(endDateStr);
}
});
});
});
/* This function just adds a zero to get this format: "01, 02, etc" in a number less than 10 */
function pad(number, length) {
var str = '' + number;
while (str.length < length) { str = '0' + str; }
return str;
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1780 次 |
| 最近记录: |