2012-05-29 53 views
2

我有一個jQuery的時間選擇器從http://labs.perifer.se/timedatepicker/MVC - 操縱jQuery插件的性能在Ajax調用

工作在我有這個時間選擇器控制的觀點。

$("#startTime").timePicker({ 
     startTime: "09.00", 
     endTime: new Date(0, 0, 0, 19, 0, 0), 
     show24Hours: false, 
     separator: '.', 
     step: 30 
    }); 

如果一個特定的時間(比如11:00 AM)是以前檢(並保存在數據庫)的特定選項應該被禁用,不適用於後續選擇。在一個MVC控制器中,通過服務層,我得到了所有以前選擇的時間的「列表」。

public ActionResult DisableTimes(param1, param2) 
    {    
     List<string> listTimes = Webservice(param1,param2); 
     //getting previously saved times - above line 
     return Json(listTimes, JsonRequestBehavior.AllowGet); 
    } 

我正在在這樣的Java腳本函數調用Ajax ..這參數傳遞到MVC控制器和返回的時間列表。

 $.ajax({ 

      "url": "/ControllerName/DisableTimes/", 
      "type": "get", 
      "dataType": "json", 
      "data": { param1: $("#paramval1").val(), param2: $("#paramvalue2").val() }, 
      "success": function (listTimes) { 

       //Code here - use the listTimes values and disable the 
       //appropriate timepicker drop down choices. 
       } 
      }); 

我如何利用時間「listTimes」列表中的我從控制器獲得禁用Jquery的Timepicker選擇?

回答

1

你應該只能夠從以下方式可供選擇刪除麗的:

$(listTimes).each(function() { 
    $('.time-picker').find('li:contains("' + this + '")').remove(); 
}); 

編輯:

這將是一個有點困難,如果你有一個頁面上的多個時間選擇器雖然。您應該可以添加:first選擇器以僅獲得第一次選擇器。

$('.time-picker:first').find('li:contains("' + this + '")').remove(); 

Live DEMO

+0

感謝您的解決方案。 – ZVenue

1

它似乎沒有該插件默認提供的功能。我將改變輕微的插件,這些代碼行(它追加到列表中的位)

// Build the list 
    for(var i = 0; i < times.length; i++) { 
     $tpList.append("<li>" + times[i] + "</li>"); 
    } 

的東西,增加了一些標識每個李:

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(); 
    } 

,並把timepicker插件調用$(「#開始時間」)timePicker阿賈克斯成功回調的內部,使得有。沒有競爭條件,因爲在插件初始化後ajax回調可能會發生。

另一種方法是處理$('#startTime')。更改並檢查是否不允許時間並向用戶顯示錯誤。

+0

謝謝..這是我期待的方向。 – ZVenue