【问题标题】:How to hide multiple datepicker calender same id document.getElementById如何隐藏多个日期选择器日历相同的id document.getElementById
【发布时间】: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


【解决方案1】:

我找到了解决方案,为默认日期选择器日历添加样式以隐藏

#ctl00_MainContent_ReportViewer1_ctl04_ctl05_ddDropDownButton {
 visibility: hidden;

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多