0

を設定した後、正しく有効にならない raddatepicker コントロールがいくつかありますdate1.enabled = true

マスター ページには、無効なコントロールを読み取り専用に設定するクライアント側関数が含まれています。

function ParseDocumentForDisabled() {
                    //Transform the disabled controls that are not inside a DIV
                    $("input[type=text][disabled]").each(function (i, v) {
                        if ($(v).attr('OnClientLoad') != '' && $(v).attr('OnClientLoad') != undefined)
                            return;
                        $(v).removeAttr("disabled");
                        $(v).attr("readonly", "");
                    });
                    //Transform the disabled DIVs
                    $("div[disabled]").each(function (i, v) {
                        $(v).removeAttr("disabled");
                        //Take each control type and parse it
                        $(v).find("input[type=text]").attr("readonly", "");
                        $(v).find("textarea").attr("readonly", "");
                        $(v).find("checkbox").attr("disabled", "disabled");
                        $(v).find("input[type=submit]").attr("disabled", "disabled");
                        $(v).find("input[type=button]").attr("disabled", "disabled");
                    });
                }

コントロールは radwindow ポップアップにあり、radcombobox 変更のイベントにリンクされていますが、コンボボックス イベントが無効化された後に raddatepicker の有効化されたプロパティを true に設定した後、カレンダー アイコンのみが再び使用可能になり、テキストエリアは読み取り専用のままになります。

ご協力ありがとうございました。虹彩

[編集] を設定することで問題を解決できましたdate1.dateinput.enabled = true。問題は、テキストエリアが無効になる代わりに読み取り専用のままであり、jquery が適切にアクティブ化しないことでした。

4

1 に答える 1

0

コントロールによって提供されるクライアント側 API ( http://www.telerik.com/help/aspnet-ajax/calendar-client-side-rad-datepicker.html ) を使用します。これは、HTML のコレクションよりもはるかに優れています。 、したがって、それを有効にするには、他の機能とコードを有効にする必要があります。これが私のために働いたものです:

<telerik:RadDatePicker runat="server" ID="rdp1" Enabled="false"></telerik:RadDatePicker>
<asp:Button ID="Button1" Text="enable picker" OnClientClick="enableDatePicker(); return false;" runat="server" />
<script>
    function enableDatePicker() {
        $find("<%=rdp1.ClientID%>").set_enabled(true);
    }
</script>

これは、コントロールの ID を知ることに依存しない方法でもあります。ページ上で無効になっているすべての HTML 要素を調べ、IScriptControl がそれらに関連付けられているかどうか、および set_enabled() API があるかどうかを確認してから呼び出します。日付ピッカーは複合コントロールであるため、実際の日付入力は無効になり、その親である日付ピッカーも有効にする必要があるため、2 番目にネストされた if.

        function enableDatePicker() {
            $telerik.$("[disabled]").each(function (index, elem) {
                if (elem.control && elem.control.set_enabled) {
                    elem.control.set_enabled(true);
                    if (elem.control.get_owner && elem.control.get_owner().set_enabled) {
                        elem.control.get_owner().set_enabled(true);
                    }
                }
            });
        }
于 2015-01-27T13:02:04.093 に答える