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 的 enabled 属性设置为 true 后,在禁用后,只有日历图标再次可用,textarea 保持只读状态。

谢谢您的帮助。鸢尾花

[编辑] 设法通过设置来解决问题date1.dateinput.enabled = true。问题是 textarea 保持只读状态而不是被禁用,并且 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,然后调用它。由于日期选择器是复合控件,实际的日期输入被禁用,您还必须启用其父级 - 日期选择器,因此第二个嵌套 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 回答