2015-08-14 188 views
0

我想客戶端在回發前驗證表單,所以我使用onclientclick事件來驗證表單,如果它是有效的,請做一些服務器端的東西。Telerik asp.net客戶端驗證

這裏我的代碼:

<head runat="server"> 
    <script type="text/javascript" id="Script1"> 
     function performCheck() { 
      return $("TextBox1").val() == ""; 
     } 
</script> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server" > 
     <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> 

     </telerik:RadScriptManager> 
    <div> 
      <asp:TextBox ID="TextBox1" runat="server" CausesValidation="true" ValidationGroup="thisGpo"></asp:TextBox> 
     <asp:RequiredFieldValidator EnableClientScript="true" ID="RequiredFieldValidator1" ValidationGroup="thisGpo" runat="server" ControlToValidate="TextBox1" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator> 
     <asp:Button OnClientClick="performCheck()" ID="Button1" runat="server" Text="Button" ValidationGroup="thisGpo" CausesValidation="true" />  </div> 
    </form> 
</body> 

問題是,如果我使用Telerik控制,他們添加標記

<telerik:RadScriptManager ID="RadScriptManager1" runat="server"> 
</telerik:RadScriptManager> 

這個東西的形式到底是怎麼造成的回傳overring我的代碼,所以它是令人沮喪的。

我的老闆迫使我們使用Telerik,因爲他們有這個奇特的數字文字框,他正在付錢。

試圖聯繫TELERIK,但他們提到他們不能給我們支持,因爲我們的版本已過期。

回答

0

經驗豐富的行爲的原因是Unobtrusive驗證,這是項目構建與.Net 4.5版本的默認驗證。

因此,當您創建.NET 4.5 Telerik網站時,默認Web窗體具有RadScriptManager。這意味着與Telerik控件一起使用的jQuery版本將作爲jQuery註冊到ScriptManager中,因此您需要指定jQuery和驗證腳本的註冊順序。不顯眼驗證的驗證腳本(WebForms.js和WebUIValidation.js)在這種情況下不可用,因此您還需要在網站上安裝它們。 以下步驟設置不引人注目的驗證步驟: 開放工具>庫包管理器>包管理器控制檯,並運行下列命令來與ScriptManager的安裝Web窗體微軟的Ajax優化包:

PM>安裝,包微軟。 AspNet.ScriptManager.WebForms -Version xxx(您可以在其下載頁面中檢查NuGet軟件包的當前版本)。這將在Web站點上安裝腳本文件WebForms.js和WebUIValidation.js。

配置RadScriptManager以指定在驗證腳本之前註冊jQuery。

1

既然你想要客戶端驗證,你可以添加'返回false;'到的OnClientClick

<asp:Button OnClientClick="performCheck(); return false;" ID="Button1" runat="server" Text="Button" ValidationGroup="thisGpo" CausesValidation="true" />  

然後有所謂的,我建議在服務器端或者創建一個隱藏的按鈕調用服務器端的方法或使用了Ajax。

使用隱藏按鈕:

<asp:Button runat="server" ID="btnDoTheThing" style="display: none;" OnClick="btnDoThething_Click"></asp:Button> 

服務器端代碼:

protected void btnDoTheThing_Click(object sender, EventArgs e) 
{ 
      // Do The Thing 
} 

所以一旦JavaScript驗證完成,是有效的,那麼使用jQuery點擊與像

呼叫按鈕
$("#btnDoTheThing").click(); 

或者,您可以使用Ajax調用服務器端代碼,一旦驗證有效。

+0

更像一個解決方法,但謝謝,我真的很感激它! –