2011-10-12 75 views
1

爲什麼客戶端的CustomValidator不會驗證?運行網頁(1)時,CustomValidator會忽略驗證規則,並且不會在ValidationSummary部分中顯示相應的消息。客戶端的CustomValidator不會驗證

當txtTotalCost爲空時,驗證器必須發出錯誤。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<script language="javascript" type="text/javascript"> 
    function ValidateTotalCost(source, arguments) { 
     if (arguments.length <= 0) { 
      arguments.isValid = false; 
     } 
     else { 
      arguments.isValid = true; 
     } 
    } 
    </script> 
<body> 
    <form id="form1" runat="server"> 
    <div> 

     <asp:ValidationSummary ID="ValidationSummary1" runat="server" /> 
     Order #&nbsp;&nbsp;&nbsp; 
     <asp:TextBox ID="txtOrderNumber" runat="server"></asp:TextBox> 
     <asp:RequiredFieldValidator ID="validateOrderNumber" runat="server" 
      ControlToValidate="txtOrderNumber" ErrorMessage="Please enter order number" 
      ToolTip="Please enter order nunmber">*</asp:RequiredFieldValidator> 
     <br /> 
     <br /> 
     Item ID&nbsp;&nbsp;&nbsp; 
     <asp:TextBox ID="txtItemID" runat="server"></asp:TextBox> 
     <asp:RequiredFieldValidator ID="validateItemID" runat="server" 
      ControlToValidate="txtItemID" ErrorMessage="Please enter item ID" 
      ToolTip="Please enter item ID">*</asp:RequiredFieldValidator> 
     <br /> 
     <br /> 
     Qty&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     <asp:TextBox ID="txtQty" runat="server"></asp:TextBox> 
     <asp:RangeValidator ID="validateQty" runat="server" ControlToValidate="txtQty" 
      ErrorMessage="Qty value range must be between 0 - 50" MaximumValue="50" 
      MinimumValue="0" ToolTip="Qty value range must be between 0 - 50">*</asp:RangeValidator> 
     <br /> 
     <br /> 
     Last Qty&nbsp; 
     <asp:TextBox ID="txtLastQty" runat="server" style="margin-left: 0px"></asp:TextBox> 
     <asp:CompareValidator ID="validateLastQty" runat="server" 
      ControlToCompare="txtQty" ControlToValidate="txtLastQty" 
      ErrorMessage="Qty and LastQty must match" ToolTip="Qty and LastQty must match">*</asp:CompareValidator> 
     <br /> 
     <br /> 
     Total&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     <asp:TextBox ID="txtTotalCost" runat="server"></asp:TextBox> 
     <asp:CustomValidator ID="CustomValidator1" runat="server" 
      ControlToValidate="txtTotalCost" 
      ErrorMessage="Total cost must be filled out" 
      ClientValidationFunction="ValidateTotalCost" 
      ToolTip="Total cost must be filled out">*</asp:CustomValidator> 
     <br /> 
     <br /> 
     <asp:Button ID="btnOK" runat="server" Text="OK" /> 
     <br /> 

    </div> 
    </form> 
</body> 
</html> 

回答

0

變化arguments.isValid變爲arguments.IsValid。它必須有一個資本「我」。

編輯:此外,爲什麼你檢查arguments.length?我想你想要:arguments.Value.length

看看這個資源:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.clientvalidationfunction.aspx

+0

即使我應用了更正,它也不起作用。 – Bob

+0

編輯:我想你也想檢查框中的值?要做到這一點,你必須使用arguments.Value.length。 –

1

的「的CustomValidator」將只在文本框是不虛火。如果您想檢查它是否爲空,請使用「RequiredField Validator」以及「CustomValidator」。另外,「Brian」建議的「IsValid」修復絕對正確。

EDIT1:

剛纔檢查了,我們可以用ValidateEmptyText =「true」屬性的自定義驗證,以避免所需的字段校驗類似下面

<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="txtTotalCost" ValidateEmptyText="true" 
     ErrorMessage="Total cost must be filled out" ClientValidationFunction="ValidateTotalCost" 
     ToolTip="Total cost must be filled out">*</asp:CustomValidator> 

希望這有助於! !

+0

謝謝! (按鍵) – Bob