2012-01-24 103 views
1

工作後,有沒有人遇到裝上jQuery的對話框jQuery的日期選擇器的問題,即jQuery的日期選擇器不會服務器驗證後工作?jQuery的日期選擇器不會服務器驗證

示例:我有一個按鈕上點擊,其負載的jquery對話框。在對話框打開事件我有ff代碼:

if ($('input.date-picker').length > 0) { //has datepicker element    
      $('input.date-picker').attr("readonly", "readonly"); 
      $('input.date-picker').datepicker({ 
       showOn: "button", 
       buttonImage: "/Content/images/calendar.gif", 
       buttonImageOnly: true, 
       dateFormat: "mm/dd/yy" 
      }); 
     } 

它在第一次加載和客戶端驗證完美。不過,我有一定的業務需求,我需要檢查服務器端。示例我有2個日期和date1應該是> date2。當這個條件不滿足時,它會返回一個錯誤並重新載入對話框上的視圖。但這次jquery datepicker沒有加載。可點擊的日期選擇器圖像未呈現。

回答

3

如果您正在使用AJAX來從服務器重新加載視圖的內容那麼當這個AJAX成功,你現在重新創建的DOM,您將需要重新安裝日期選擇器。例如,讓我們假設你已經Ajax化包含在該對話框像這樣的形式:

$('#myform').submit(function() { 
    $.ajax({ 
     url: this.url, 
     type: this.method, 
     data: $(this).serialize(), 
     success: function(result) { 
      $('#someid').html(result); 

      // reattach the datepicker 
      // TODO: put this in a separate function to avoid 
      // repeating it 
      if ($('input.date-picker').length > 0) { 
       $('input.date-picker').attr("readonly", "readonly"); 
       $('input.date-picker').datepicker({ 
        showOn: "button", 
        buttonImage: "/Content/images/calendar.gif", 
        buttonImageOnly: true, 
        dateFormat: "mm/dd/yy" 
       }); 
      } 
     } 
    }); 
    return false; 
}); 

,如果您使用的是內置的Ajax.BeginForm助手,那麼你可以在OnSuccess功能,你會訂閱執行此。

+0

您好,感謝您的幫助,但沒有奏效。請注意,我正在加載對話框中的窗體。我會嘗試定製一個屬性來比較兩個日期。 – czetsuya

+1

@czetsuya,是的我明白你正在加載對話框中的窗體。我不明白的是你是否使用AJAX調用服務器提交這個表單,然後用從服務器返回的部分重新加載對話框的內容。如果是這種情況,您需要在此AJAX調用的成功事件中重新附加日期選擇器。 –

+0

對不起。在模式對話框中提交表單時,我沒有使用ajax。我使用的是從這裏的代碼:http://nickstips.wordpress.com/2011/08/11/asp-net-mvc-ajax-dialog-form-using-jquery-ui/。正如你在代碼中看到的那樣,它手動提交表單。好像我得到通過修改DialogForm.js – czetsuya