私はしばらくの間、jQueryの日付ピッカーを使用しています。しかし、私は現在、それをユーザーコントロールで使用しており、エラーで失敗するようにします。このjQuery日付ピッカーコードで何が問題になりますか?
日付ピッカーの作成時にオブジェクトがこのプロパティまたはメソッドをサポートしません。次のように
私のサイトの構造は次のとおりです。
[Root]
- [Pages]
- MasterPage.Master
- GoodsReceived.aspx
- [WebControls]
- [PageControls]
- PopupBatchEntry.ascx
私はそうのようなマスターページへのjQueryを追加しました:
<link href="../App_Themes/Default/Style.css" rel="stylesheet" type="text/css" />
<link href="../JavaScripts/jquery-ui.css" rel="stylesheet" type="text/css" />
<script src="../JavaScripts/jquery.min.js" type="text/javascript"></script>
<script src="../JavaScripts/jquery-ui.min.js" type="text/javascript"></script>
私はそうのようなユーザーコントロールにはjQueryを追加しました:
<script src="../../JavaScripts/jquery.min.js" type="text/javascript"></script>
<script src="../../JavaScripts/jquery-ui.min.js" type="text/javascript"></script>
日付ピッカーに表示しようとしているテキストボックスは、ユーザーコントロールにあります(ユーザーコントロールで)日付ピッカーの中にテキストボックスをオンにするために使用して
<asp:GridView ID="gvBatchDetails" runat="server" AutoGenerateColumns="False" EnableModelValidation="True">
<Columns>
<asp:TemplateField HeaderText="Use By">
<EditItemTemplate>
<asp:TextBox ID="txtUseBy" runat="server" Text='<%# Bind("UseBy", "{0:dd/MM/yyyy}") %>'
Width="80px" CssClass="datePicker"></asp:TextBox>
<%-- <cc1:CalendarExtender ID="txtUseBy_CalendarExtender" runat="server"
Enabled="True" Format="dd/MM/yyyy" TargetControlID="txtUseBy">
</cc1:CalendarExtender>--%>
<asp:RequiredFieldValidator ID="valSellByReq" runat="server" ControlToValidate="txtUseBy"
ErrorMessage="* Required" Display="Dynamic"></asp:RequiredFieldValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Bind("UseBy", "{0:dd/MM/yyyy}") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Sell By">
<EditItemTemplate>
<asp:TextBox ID="txtSellBy" runat="server" Text='<%# Bind("SellBy", "{0:dd/MM/yyyy}") %>'
Width="80px" CssClass="datePicker"></asp:TextBox>
<%-- <cc1:CalendarExtender ID="txtSellBy_CalendarExtender" runat="server" Enabled="True"
Format="dd/MM/yyyy" TargetControlID="txtSellBy">
</cc1:CalendarExtender>--%>
<asp:RequiredFieldValidator ID="valSellByRequired" runat="server" ControlToValidate="txtSellBy"
ErrorMessage="* Required" Display="Dynamic"></asp:RequiredFieldValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# Bind("SellBy", "{0:dd/MM/yyyy}") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Quantity Delivered">
<EditItemTemplate>
<asp:TextBox ID="txtQuantityDelivered" runat="server" Text='<%# Bind("QuantityDelivered") %>'
Width="75px"></asp:TextBox>
<asp:RequiredFieldValidator ID="valQuantityRequired" runat="server" ControlToValidate="txtQuantityDelivered"
ErrorMessage="* Required" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RangeValidator ID="valQuantityRange" runat="server" ControlToValidate="txtQuantityDelivered"
ErrorMessage="* Invalid" MinimumValue="0" Type="Double" CultureInvariantValues="True"
Display="Dynamic"></asp:RangeValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label5" runat="server" Text='<%# Bind("QuantityDelivered") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Right" />
<ItemStyle HorizontalAlign="Right" />
</asp:TemplateField>
<asp:TemplateField ShowHeader="False">
<EditItemTemplate>
<table class="BorderlessTable">
<tr>
<td>
<asp:Button ID="Button1" runat="server" CausesValidation="True" CommandName="Update"
Text="Update" />
</td>
<td>
<asp:Button ID="Button2" runat="server" CausesValidation="False" CommandName="Cancel"
Text="Cancel" />
</td>
</tr>
</table>
</EditItemTemplate>
<ItemTemplate>
<table class="BorderlessTable">
<tr>
<td>
<asp:Button ID="Button1" runat="server" CausesValidation="False" CommandName="Edit"
Text="Edit" />
</td>
<td>
<asp:Button ID="Button2" runat="server" CausesValidation="False" CommandName="Delete"
Text="Delete" />
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
そして最後にjQueryのイム:GridViewの(日付ピッカーCSSクラス):内
//Configure dates when the page is loaded
$(document).ready(configureDates);
//Add handler toend request
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(configureDates);
//Configure all date picker text boxes
function configureDates() {
var datePickers = $('.datePicker');
if ($(datePickers).length > 0) {
$(datePickers).datepicker({ dateFormat: "dd/mm/yy" }); <--- ERROR IS HERE
}
}
誰であるかを見ることができますこれは間違っていますか?現在のコンテキストがページフォルダにあるのか、Webコントロールフォルダにあるのかに応じて、jQueryファイルへのパスで行うことができると思っていました。
jQueryは、セレクタが要素を返さないケースを完全に処理することができます。自分で行うと、何も得られず、コードが複雑になるようです。 –
@Anthony Grist - ありがとう、私は最初にそれが問題を引き起こしていると思ったので、私はそれを追加しました(テキストボックスは編集テンプレートにあり、最初のページの読み込みには存在しません)。確認のお礼あり – WraithNath
正直言って、jQuery UIのインポートに問題があるというあなたの元々の考えは正しいと思います。つまり、何らかの理由でjQuery UI .jsファイルにdatePickerコードが含まれていません。同じ.jsファイルからインポートされたメソッドを使用している同じページに他のコードがありますか? –