我设置date1.enabled = true
后,我有几个raddatepicker控件无法正确启用。
母版页包含一个客户端功能,可将禁用的控件设置为只读:
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仍然是readonly而不是被禁用,而jquery没有正确激活它。
答案 0 :(得分:0)
使用控件(http://www.telerik.com/help/aspnet-ajax/calendar-client-side-rad-datepicker.html)提供的客户端API,因为它不仅仅是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);
}
}
});
}