2011-02-17 109 views
0

我有這個文本框:驗證HTML文本框

<%= Html.TextBox("EffectiveDate", Model.EffectiveDate.HasValue ? Model.EffectiveDate.Value.ToString("dd-MMM-yyyy") : "", new { @class = "economicTextBox", propertyName = "EffectiveDate", onchange = "parseAndSetDt(this); ", dataType = "Date" })%> 

我需要JS驗證的幫助。如果用戶有權限,他們可以輸入任何日期。如果用戶沒有,他們只能輸入當前的日期或將來的日期。

這是一個控制器方法,我可以得到,如果用戶有權限與否。

[NoCache] 
     public ActionResult HasAdvanced() 
     { 
      if (Chatham.Web.UI.Extranet.SessionManager.DisplayUser.IsInRole("hasICAdvanced")) 
      { 
       return Json(
       new 
       { 
        value = "true" 
       }); 
      } 
      else{ 
       return Json(
       new 
       { 
        value = "false" 
       }); 
      } 
     } 

Js/JQuery會是什麼樣子?我很難過。

謝謝!

回答

0

如果您使用jquery驗證,請查看remote規則。

而且它最終可能會看起來像這樣的事情:

$("#myform").validate({ 
    rules: { 
    EffectiveDate: { 
     required: true, 
     remote: "HasAdvanced" 
    } 
    } 
}); 

如果你不希望使用現有的框架,你可以滾你自己的驗證此一個字段。

$("#EffectiveDate").blur(function(){ 
    //or $.get 
    $.post("HasAdvanced", null, function(data){ 
    //Handle the json data and update the field display a message, etc...... 
    }, "json"); 
}); 
+0

在什麼地方HasAdvanced方法發揮作用? – slandau 2011-02-17 20:27:05

0

一點題外話您HasAdvanced方法可以大大簡化:

return Json(
    new { value = 
     Chatham.Web.UI.Extranet.SessionManager.DisplayUser.IsInRole("hasICAdvanced").ToString() 
    });