2015-11-12 105 views
0

我已經添加了一個CustomValidator ClientValidationFunction來驗證我的Web應用程序中的文本字段,但是,此驗證函數根本不會觸發。 這裏是我的驗證功能:CustomFieldValidator ClientValidationFunction沒有觸發並且沒有錯誤

function isValidYear(sender,args) 
     { 
      alert('Me here'); 
      var year = document.getElementById('MainContent_frmArticle_Source_txtYear').value; 
      var currentdate = new Date(); 
      var regex = new RegExp("^\d{4}$"); 
      if (year > 1 && year <= currentdate.getFullYear() && regex.test(year)) { 
       alert('IsValid'); 
       args.IsValid = true; 
      } 
      else 
      { 
       alert('Is Not Valid'); 
       args.IsValid = false; 
      } 

//我說這些警報只是爲了測試函數是否被解僱,但他們從來沒有展示。

這裏是我的自定義的驗證碼:

<asp:TextBox ID="txtYear" runat="server" widtth="20%"></asp:TextBox> 
<asp:CustomValidator runat="server" ID="CustomValidateYear" ClientValidationFunction="isValidYear" ControlToValidate="txtYear" ErrorMessage="Please enter a valid year" Display="Static" ForeColor="Red" ></asp:CustomValidator> 

更多信息:
我使用的是Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.6.114.0,並在添加驗證器後第一次運行我得到了一個「不顯眼驗證」的錯誤,所以我遵循一個網站的步驟(我不記得是哪一個)來安裝包到我的網站項目:

<package id="AspNet.ScriptManager.jQuery" version="2.1.4" targetFramework="net45" /> 
    <package id="jQuery" version="2.1.4" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.ScriptManager.MSAjax" version="5.0.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.ScriptManager.WebForms" version="5.0.0" targetFramework="net45" /> 

請注意,我不想設置SO的大多數帖子提到的不顯眼的驗證無。

回答

2

代碼,你發佈的作品,只有我注意到,你錯過了你的js函數isValidYear右括號},並檢查是否你把它裏面<script type="text/javascript"></script>所以它看起來像

<script type="text/javascript"> 

    function isValidYear(sender, args) { 
     alert('Me here'); 
     var year = document.getElementById('MainContent_frmArticle_Source_txtYear').value; 
     var currentdate = new Date(); 
     var regex = new RegExp("^\d{4}$"); 
     if (year > 1 && year <= currentdate.getFullYear() && regex.test(year)) { 
      alert('IsValid'); 
      args.IsValid = true; 
     } 
     else { 
      alert('Is Not Valid'); 
      args.IsValid = false; 
     } 
    } 
</script> 

也請注意的CustomValidator贏得在空文本「T火,你需要添加的RequiredFieldValidator

順便說一句,你可以簡單地取代你document.getElementById('MainContent_frmArticle_Source_txtYear').value

args.Value 
+1

由於提示有幫助,我將其標記爲答案。我發現我的項目缺少global.ascx.cs類,所以我添加了它,併爲在這裏找到的不顯眼驗證添加了必要的代碼:http://stackoverflow.com/questions/16660900/webforms-unobtrusivevalidationmode-requires-a -scriptresourcemapping換的jQuery。我感謝您的幫助。 – user3340627