2011-01-25 92 views
0

任何人都有一个想法,为什么这段代码不起作用?动态地将自定义验证程序附加到控件时的问题

<script type="text/javascript"> 
    function BookDeskValidation(source, arguments) { 
     var deskCombo = $find("<%=RadComboBoxDesk.ClientID%>"); 
     var bookCombo = $find("<%=RadComboBoxBook.ClientID%>"); 
     if (bookCombo.get_text() != "" && deskCombo.get_text() == "") { 
      arguments.IsValid = false; 
     } 
     else { 
      arguments.IsValid = true; 
     } 
    } 

    function AttachValidator(combobox) { 
     var validator = document.getElementById("<%= CustomValidatorDeskBook.ClientID %>"); 
     validator.controltovalidate = combobox.get_id(); 
     validator.ClientValidationFunction = "BookDeskValidation"; 
     ValidatorHookupControl(combobox, validator); 
    } 
</script> 

<td>Book:&nbsp;</td> 
     <td> 
      <telerik:RadComboBox ID="RadComboBoxBook" runat="server" OnClientFocus="AttachValidator"> 
      </telerik:RadComboBox> 
     </td> 

<td width="70">Desk:&nbsp;</td> 
      <td width="100"> 
       <telerik:RadComboBox ID="RadComboBoxDesk" runat="server" OnClientFocus="AttachValidator"> 
       </telerik:RadComboBox> 
      </td> 
<asp:CustomValidator ID="CustomValidatorDeskBook" runat="server" 
      ErrorMessage="Error" 
      ClientValidationFunction="BookDeskValidation" ForeColor="Red">*</asp:CustomValidator> 

的OnClientFocus很火,但随后被因为当我退出上验证应重视控制没有被验证进行连接的自定义验证似乎并不。

谢谢!

回答

2

好吧,我设法得到这项工作。这就是我所做的。如果有人知道一个更好的方法来做到这一点,或者我做了什么来解决问题是不对的请让我知道!

因此,这里是我所做的:

<script type="text/javascript"> 
    function BookDeskValidation(source, arguments) { 
     var deskCombo = $find("<%=RadComboBoxDesk.ClientID%>"); 
     var bookCombo = $find("<%=RadComboBoxBook.ClientID%>"); 
     if (bookCombo.get_text() != "" && deskCombo.get_text() == "") { 
      arguments.IsValid = false; 
     } 
     else { 
      arguments.IsValid = true; 
     } 
    } 

    function AttachValidator(combobox) { 
     var validator = document.getElementById("<%= CustomValidatorDeskBook.ClientID %>"); 
     validator.ControlToValidate = combobox.get_id(); 
    } 

    function EnableValidator(combobox) { 
     var validator = document.getElementById("<%= CustomValidatorDeskBook.ClientID %>"); 
     ValidatorEnable(validator, true); 
    } 
</script> 

<td>Book:&nbsp;</td> 
<td> 
     <telerik:RadComboBox ID="RadComboBoxBook" runat="server" OnClientFocus="AttachValidator" OnClientDropDownClosed="EnableValidator"> 
     </telerik:RadComboBox> 
</td> 

所以basicly我摆脱了ValidatorHookupControl功能,并与ValidatorEnable取而代之的事件OnClientDropDownClosed