Javascript MVC-在ajax调用中操作Jquery插件属性
我正在与来自的Jquery时间选择器一起工作 在视图中,我有这个时间选择器控件Javascript MVC-在ajax调用中操作Jquery插件属性,javascript,jquery,asp.net,ajax,asp.net-mvc,Javascript,Jquery,Asp.net,Ajax,Asp.net Mvc,我正在与来自的Jquery时间选择器一起工作 在视图中,我有这个时间选择器控件 $("#startTime").timePicker({ startTime: "09.00", endTime: new Date(0, 0, 0, 19, 0, 0), show24Hours: false, separator: '.', step: 30 }); 如果之前选择了某个特定时间(比如上午11:00)
$("#startTime").timePicker({
startTime: "09.00",
endTime: new Date(0, 0, 0, 19, 0, 0),
show24Hours: false,
separator: '.',
step: 30
});
如果之前选择了某个特定时间(比如上午11:00),则该特定选项应被禁用,且不可用于后续选择。在一个MVC控制器中,通过服务层,我得到了一个以前选择的所有时间的“列表”
public ActionResult DisableTimes(param1, param2)
{
List<string> listTimes = Webservice(param1,param2);
//getting previously saved times - above line
return Json(listTimes, JsonRequestBehavior.AllowGet);
}
如何利用从控制器获得的时间列表“listTimes”来禁用Jquery时间选择器选项 显然,这个datepicker插件不能让你删除他的行为 但我相信您可以从文档中删除该元素 然后重新添加它 使用: 及 或者每次可以有两个元素,显示/隐藏所需内容或使用: 及
默认情况下,该插件似乎没有提供该功能。我会稍微更改插件代码中的这些行(它附加到列表中的位) 并且还将timepicker插件调用$(“#startTime”).timepicker放在ajax成功回调中,这样就没有竞争条件,因为ajax回调可能会在插件初始化之后发生
另一种选择是只处理$(“#startTime”)。更改并检查时间是否不允许,并向用户显示错误。您应该能够通过以下方式从可用选项中删除li:
$(listTimes).each(function() {
$('.time-picker').find('li:contains("' + this + '")').remove();
});
编辑:
但是,如果在一个页面上有多个时间选择器,则会有点困难。您应该能够添加:first
选择器,以仅获取第一次选择器
$('.time-picker:first').find('li:contains("' + this + '")').remove();
for(var i = 0; i < times.length; i++) {
$tpList.append("<li class='"+times[i]+'">" + times[i] + "</li>");
}`
"success": function (listTimes) {
$(listTimes).each(function(i,item){
$('li.'+item).remove();
});
//or may be if you are just getting an array of strings from the webservice then something like this will be enough: $('.'+listTimes.join(',.')).remove();
}
$(listTimes).each(function() {
$('.time-picker').find('li:contains("' + this + '")').remove();
});
$('.time-picker:first').find('li:contains("' + this + '")').remove();