请帮帮我。我已经用谷歌搜索了这个,但我无法找到确切的解决方案。
我有两个下拉菜单,一个用于选择“从约会时间”和另一个选择“迄今为止”。 例如:如果我从“从日期”下拉列表中选择10,则“迄今为止”的选项小于10&应在“迄今为止”下拉列表中禁用10。
注意:小提琴中的表行不是静态的2行。它可能是3个或更多
这是我的代码
$(".tfdate").change(function() {
var target = $(this).parent().siblings().find("select.ttdate");
target.find("option").removeAttr("disabled");
var selected = $(this).val();
target.find("option").prevUntil("option[value='"+selected+"']").attr('disabled','disabled');
//target.find("option").prevAll("option[value='"+selected+"']").attr('disabled','disabled');
});
从日期开始
迄今
答案 0 :(得分:3)
嗯,说实话,你应该真的使用jQuery日期选择器,否则你必须构建逻辑来计算所选数字是否是那个月的有效日期(即有人选择了2月30日),也验证了闰年等。
要解决手头的问题,您需要找到一个选项值较低(或相等)的选项,您可以使用filter
来执行此操作:
var selected = parseInt($(this).val());
target.find("option").filter(function () {
return parseInt($(this).val()) === selected
|| parseInt($(this).val()) < selected;
}).attr('disabled','disabled');
请参阅HERE
答案 1 :(得分:1)
我个人更喜欢使用jquery日期选择器,如果你想在这里使用它的方式
<强> DEMO 强>
$(document).ready(function () {
$("#dt1").datepicker({
dateFormat: "dd-M-yy",
minDate: 0,
onSelect: function (date) {
var date2 = $('#dt1').datepicker('getDate');
date2.setDate(date2.getDate() + 1);
$('#dt2').datepicker('setDate', date2);
//sets minDate to dt1 date + 1
$('#dt2').datepicker('option', 'minDate', date2);
}
});
$('#dt2').datepicker({
dateFormat: "dd-M-yy",
onClose: function () {
var dt1 = $('#dt1').datepicker('getDate');
console.log(dt1);
var dt2 = $('#dt2').datepicker('getDate');
if (dt2 <= dt1) {
var minDate = $('#dt2').datepicker('option', 'minDate');
$('#dt2').datepicker('setDate', minDate);
}
}
});
});
更新:
<强> DEMO 强>
根据您的要求
$('#mybtn').click(function() {
var clone = $('.child:first').clone(true).appendTo('#child');
clone.find('.myclass').datepicker();
});
答案 2 :(得分:1)
我建议:
$(".tfdate").change(function() {
$(this).closest('tr')
.find('.ttdate option')
.prop('disabled', false)
.filter('[value="'+ this.value +'"]')
.prevAll()
.addBack()
.prop('disabled', true);
});