【发布时间】:2014-11-12 18:46:32
【问题描述】:
您好,当我添加 datepicker 隐藏字段 reportViewer 并在 ReportViewer Master 页面中添加以下代码时,我一直在为报告查看器工作日期选择器,当我预览我的报告时,我得到了两个 datepicker carlendar(红色一个是默认的),我添加 document.getElementById('ctl00_MainContent_ReportViewer1_ctl04_ctl03_ddDropDownButton').style.visibility = 'hidden';隐藏默认的,但只隐藏第一个日期选择器,第二个仍然显示。如何隐藏这两个datepicker(里面红色的id=ctl00_MainContent_ReportViewer1_ctl04_ctl03_ddDropDownButton)
function fixParameters() {
if ($.browser.webkit) {
// add date picker
$($(":hidden[id*='datepicker']").val().split(",")).each(function (i, item) {
var h = $("table[id*='ParametersGrid'] span").filter(function (i) {
var v = "[" + $(this).text() + "]";
// var vs = $("input[id=*='ParametersGrid']").is(':checked');
return (v != null && item != "" && v.indexOf(item) >= 0);
}).parent("td").next("td").find('input[type="text"]:not(:has(input[type="checkbox"]))').datepicker({
showOn: "button"
, buttonImage: '/Reserved.ReportViewerWebControl.axd?OpType=Resource&Name=Microsoft.Reporting.WebForms.calendar.gif'
, buttonImageOnly: true
, dateFormat: 'mm/dd/yy'
, changeMonth: true
, changeYear: true
, showOtherMonths: true
, inline: true
, selectOtherMonths: true,
});
});
// remove time from date
$($(":hidden[id*='datepicker']").val().split(",")).each(function (i, item) {
var h = $("table[id*='ParametersGrid'] span").filter(function (i) {
var v = "[" + $(this).text() + "]";
return (v != null && item != "" && v.indexOf(item) >= 0);
}).parent("td").next("td").find("input").parent().children("input").each(function () {
$(this).val($(this).val().substring(0, 10));
});
});
}
//}
the resaon that i add else because i want the IE,firefox to have the same datepicker style
else {
document.getElementById('ctl00_MainContent_ReportViewer1_ctl04_ctl03_ddDropDownButton').style.visibility = 'hidden';
$($(":hidden[id*='datepicker']").val().split(",")).each(function (i, item) {
var h = $("table[id*='ParametersGrid'] span").filter(function (i) {
var v = "[" + $(this).text() + "]";
// var vs = $("input[id=*='ParametersGrid']").is(':checked');
return (v != null && item != "" && v.indexOf(item) >= 0);
}).parent("td").next("td").find('input[type="text"]:not(:has(input[type="checkbox"]))').datepicker({
showOn: "button"
// , buttonImage: '/Reserved.ReportViewerWebControl.axd?OpType=Resource&Name=Microsoft.Reporting.WebForms.calendar.gif'
, buttonImage: 'Reserved.ReportViewerWebControl.axd?OpType=Resource&Version=10.0.40219.329&Name=Microsoft.Reporting.WebForms.calendar.gif'
, buttonImageOnly: true
, dateFormat: 'mm/dd/yy'
, changeMonth: true
, changeYear: true
, showOtherMonths: true
, inline: true
, selectOtherMonths: true,
});
});
// remove time from date
$($(":hidden[id*='datepicker']").val().split(",")).each(function (i, item) {
var h = $("table[id*='ParametersGrid'] span").filter(function (i) {
var v = "[" + $(this).text() + "]";
return (v != null && item != "" && v.indexOf(item) >= 0);
}).parent("td").next("td").find("input").parent().children("input").each(function () {
$(this).val($(this).val().substring(0, 10));
});
});
}
}
});
【问题讨论】:
-
为什么不能在页面中使用单个组件来处理所有浏览器类型? JqueryUI datepicker 支持多种浏览器jqueryui.com/datepicker
-
请多解释。
-
ReportViewer 不支持日期选择器,所以当我在 Chrome 上预览我的报告时,日期选择器日历消失了,然后我必须添加
到reportviewer 并将 javascript 添加到 reportViewer 母版页。一切都很好,但是当点击 Chrome 和 IE 之间的 carlendar 时风格不同,然后我添加 else { continue next comment -
我在 if ($.browser.webkit) 上面添加代码来检查 chrome 是否显示日期选择器,否则在 IE 上显示日期选择器与 chrome 相同的样式,而不是只显示IE 上的新日期选择器样式也显示默认日期选择器,然后我添加了 document.getElementById('ctl00_MainContent_ReportViewer1_ctl04_ctl03_ddDropDownButton').style.visibility = 'hidden';隐藏默认的,但只工作第一个,第二个仍然存在(见第二张图片)
-
我不确定我是否理解错了,但是如果你在 DOM 中有两个具有相同 ID 的元素,那么 jQuery 只会识别第一个元素,因为 ID 必须是唯一的 - 你不能拥有同时具有相同 ID 的两个元素。
标签: javascript css reporting-services datepicker