2011-10-31 48 views
1

我使用jEditable插件與datepicker,但我需要在提交到數據庫之前對日期進行驗證。所以我編輯jEditable-datepicker.js到這樣的事情:jQuery + jEditable - 防止提交自定義輸入

submit: function (settings, original) { 
    var form = this; 
    var tid = $(original).attr('id'); 
    var input = $(original).find('input'); 
    var newDate = input.val(); 
    alert('id' + tid); 
    alert('newdate' + newDate); 
    $.ajax({ 
     async: false, 
     url: '/Stock/CompareDate', 
     type: 'GET', 
     data: { id: tid, inputDate: newDate }, 
     success: function (result) { 
      alert(result); 
      if (result < 0) { 
       alert("Expiry dare cannot be earlier than storage date"); 
       return false; 
      } 
      else { 
       alert('else'); 
       return true; 
      } 
     } 
    }); 
}, 

/* attach jquery.ui.datepicker to the input element */ 
plugin: function (settings, original) { 
    var form = this, 
     input = form.find("input"); 

    // Don't cancel inline editing onblur to allow clicking datepicker 
    settings.onblur = 'nothing'; 

    datepicker = { 
     dateFormat: 'D, dd M yy' 
    }; 

    input.datepicker(datepicker); 
} 

我得到的警報if語句,這意味着該驗證方法的工作原理,但無效值仍然可以提交到數據庫。我不知道爲什麼回報虛假力量停止提交行動..我試圖解決這個問題很長一段時間,但這是我接近解決方案的時間。我只是憑着知道我可以在if語句停止提交...

難道真的需要幫助這裏...謝謝....

(更新:加入HTML)

我的日期場是在一個表:

 <td id="[email protected](item.FoodID)" class="storagedatepicker"> 
       @String.Format("{0:ddd, d MMM yyyy}", item.StorageDate) 
     </td> 
     <td id="[email protected](item.FoodID)" class="expirydatepicker"> 
       @String.Format("{0:ddd, d MMM yyyy}", item.ExpiryDate) 

到jeditable的調用是這樣的:

$('.expirydatepicker').editable('@(Url.Action("Edit", "Stock"))', 
    { 
     type: 'datepicker', 
     indicator: 'saving...', 
     event: 'dblclick', 
     tooltip: 'Double click to edit...', 
     submit: '<img src="../../Content/Add_in_Images/ok.png" alt="ok"/>', 
     cancel: '<img src="../../Content/Add_in_Images/cancel.png" alt="cancel"/>', 
     style: 'inherit' 

    }); 
+0

請出示HTML – Hogan

+0

嗨,我加入了HTML,無論是我的日期字段在表 – shennyL

+0

仍然不清楚在哪裏提交函數被調用 – Hogan

回答

0

得到它的工作不要試圖停止提交,但如果驗證失敗,則用默認值替換輸入值。由於

0

晚的答案,但也許還是對他人有用,只是return false;onsubmit參數功能,避免其提交,例如:

$('.editable').editable('/someurl', { 

    ... // all your jeditable settings 

    onsubmit: function (settings, original) { 

     if (<conditions to not submit>) 
      return false; 

    } 
});