因为我有两个选择框,一个月(一月至十二月)和一个日(1-31).
我想禁用不存在的月份组合
代码:
<sel><span>Month:</span>
<select required name="month">
<option value="">Select</option>
<option value="01">January</option>
<option value="12">December</option>
</select>
</sel>
<br />
<sel><span>Day:</span>
<select required name="day">
<option value="">Select</option>
<option value="1">1</option>
<option value="31">31</option>
</select>
</sel>
Jquery可以做到,但我做不到。
发布于 2015-06-10 20:18:36
无论何时从列表中选择任何选项,它都会触发一个change
事件。可以将事件绑定到此更改事件,并实现检查当前月和日组合的逻辑。
E.g
$('select[name="month"]').change(function () {
var currentMonth = this.value;
switch (currentMonth) {
case '01'://for January
case '02'://for February
disableDay(30);
disableDay(31);
...
...
}
});
若要在“选择下拉列表”中选择任何选项,请执行以下操作
$('select[name="day"]').find('option[value="31"]').prop('disabled', true);
因此,您可以实现一个函数,在“日”下拉列表中禁用“日”,并根据月份进行相应的月下拉更改调用,并传递正确的禁用日期。
function disableDay (day) {
$('select[name="day"]').find('option[value="'+day+'"]').prop('disabled', true);
}
发布于 2015-06-10 20:15:35
使用预先制作好的库https://jqueryui.com/datepicker/,它更简单、更干净。否则将是大量的jquery,在月份更改、检查日期、添加/删除以匹配月份.
发布于 2015-06-10 20:27:04
它有点丑,但它能满足你的要求.
jQuery(document).ready(function($){
var m = $('select[name=month]');
var d = $('select[name=day]');
var hide31 = ['02','04','06','09','11'];
var hide30 = ['02'];
var d31 = d.find('[value=31]');
var d30 = d.find('[value=30]');
m.change(function(){
var v = m.val();
if (hide30.indexOf(v)>=0){ d30.hide(); }
else { d30.show(); }
if (hide31.indexOf(v)>=0){ d31.hide(); }
else { d31.show(); }
});
});
https://stackoverflow.com/questions/30766273
复制相似问题