簡體   English   中英

動態將自定義驗證器附加到控件時出現問題

[英]Problem when attaching a Custom Validator to a control dynamicly

任何人都知道為什么此代碼不起作用?

<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着火了,但是自定義驗證器似乎沒有被附加,因為當我退出應附加驗證器的控件時,沒有進行任何驗證。

謝謝!

好的,我設法完成了這項工作。 這是我所做的。 如果有人知道更好的方法,或者我為解決問題所做的事情不正確,請告訴我!

所以這就是我所做的:

<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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM