【问题标题】:ASP.NET Pikaday don't work with master pageASP.NET Pikaday 不适用于母版页
【发布时间】:2017-01-28 16:22:24
【问题描述】:

在一个简单的网络表单中,Pikaday 工作得很好,但是当我在内容页面中使用它时它不起作用,为了更好地理解我提供了代码......提前谢谢

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="Test2.Site1" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link href="css/pikaday.css" rel="stylesheet" />
    <link href="css/theme.css" rel="stylesheet" />
    <script src="js/pikaday.js"></script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            </asp:ContentPlaceHolder>
        </div>
    </form>
</body>
</html>

和内容页面代码

<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="ContentPage.aspx.cs" Inherits="Test2.WebForm2" %>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
     <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <h4>This is from content page</h4>
            <asp:TextBox ID="tbxFromDate" runat="server"></asp:TextBox>
            <asp:TextBox ID="tbxToDate" runat="server"></asp:TextBox>

            <script type="text/javascript">
                var picker1 = new Pikaday({
                    field: document.getElementById('tbxFromDate'),
                    theme: 'dark-theme'
                });
                var picker2 = new Pikaday({
                    field: document.getElementById('tbxToDate'),
                    theme: 'dark-theme'
                });
            </script>
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Content>

我不明白我错过了什么

【问题讨论】:

  • 我不明白“不起作用”是什么意思。描述你正在看到的行为,并描述你期望看到的行为。是否有任何服务器端错误?控制台中有任何客户端 JavaScript 错误吗?如果在代码中设置断点,是否到达?当您在浏览器中检查生成的 HTML 时,是否所有内容(包括元素 ID)都符合您的预期?请记住,这些是您需要在开始时在不被询问的情况下包含在您的问题中的各种详细信息,以便有一个完整的问题。

标签: javascript asp.net webforms datepicker pikaday


【解决方案1】:

问题在于 HTML 中不存在 tbxFromDate 和 tbxToDate。由于控件位于内容控件中,因此更改了它们的 ID 以确保没有重复。

他们的 ID 可能类似于:ContentPlaceHolder1_tbxFromDate。

因此您需要通过他们的ClientID 引用它们。所以使用

<script type="text/javascript">
    var picker1 = new Pikaday({
        field: document.getElementById('<%= tbxFromDate.ClientID %>'),
        theme: 'dark-theme'
    });
    var picker2 = new Pikaday({
        field: document.getElementById('<%= tbxToDate.ClientID %>'),
        theme: 'dark-theme'
    });
</script>

【讨论】:

  • 如果我是你,我会推迟发布答案,直到问题 1) 清楚地描述了什么“不起作用”和 2) 显示了基本调试的尝试。从长远来看,学习如何进行基本调试并提出一个好问题比得到答案要好得多。
  • 这次很好用,很抱歉我的错误我现在可以编辑这篇文章吗?
猜你喜欢
  • 1970-01-01
  • 2014-01-17
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 1970-01-01
  • 2012-06-13
  • 1970-01-01
相关资源
最近更新 更多