【问题标题】:Problem when attaching a Custom Validator to a control dynamicly将自定义验证器动态附加到控件时出现问题
【发布时间】:2011-06-15 06:58:57
【问题描述】:

有人知道为什么这段代码不起作用吗?

<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 已触发,但似乎未附加自定义验证器,因为当我退出应附加验证器的控件时未完成验证。

谢谢!

【问题讨论】:

    标签: javascript asp.net validation telerik


    【解决方案1】:

    好的,我设法完成了这项工作。这就是我所做的。如果有人知道更好的方法,或者我解决问题的方法不正确,请告诉我!

    这就是我所做的:

    <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>
    

    所以基本上我摆脱了 ValidatorHookupControl 函数,并在事件 OnClientDropDownClosed 上将其替换为 ValidatorEnable

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多