2017-01-28 60 views
0

在一個簡單的Web表單中Pikaday的工作很好,但是當我在內容頁面中使用它時,它不起作用,爲了更好地理解我給出的代碼。 ....提前ASP.NET 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> 

我不明白我錯過了什麼

+1

我不明白什麼「不起作用」的意思。描述你所看到的行爲,並描述你期望看到的行爲。有沒有服務器端錯誤?控制檯中的任何客戶端JavaScript錯誤?如果你在你的代碼中設置了一個斷點,它是否到達?當你在瀏覽器中檢查生成的HTML時,是否所有內容(包括元素ID)與你所期望的一致?請記住,這些是你需要在你的問題中包含的一些細節,在開始階段,沒有被問到,以便有一個完整的問題。 – mason

回答

1

的問題是,tbxFromDatetbxToDate不前ist在HTML中。由於這些控件位於內容控件中,因此它們的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

如果我是你,我會延遲發佈答案,直到問題1)清楚地描述了什麼「不起作用」,並且2)顯示了嘗試進行基本的調試。學習如何進行基本的調試並提出一個好的問題,從長遠來看,這些問題遠比交出答案要好得多。 – mason

+0

它對我的錯誤很好,很抱歉,現在我可以編輯這篇文章了嗎? – Simon