1

我有 jquery datepicker 的问题。这是代码

<asp:GridView ID="CompIncGridView1" runat="server" AllowPaging="True" AllowSorting="True"
                    AutoGenerateColumns="False" DataKeyNames="D_id" ClientIDMode="Static" >
                    <Columns>
                        <asp:TemplateField HeaderText="Data idoneità">
                            <EditItemTemplate>
                            </EditItemTemplate>
                            <ItemTemplate>
                                <asp:TextBox CssClass="DatePick" ID="ComplyDateTB1" runat="server" Text='<%# Bind("ComplyDate", "{0:d}") %>'></asp:TextBox>
                            </ItemTemplate>
                        </asp:TemplateField>

                    </Columns>
                </asp:GridView>

这是jQuery代码

$(document).ready(function () {
            $(".DatePick").datepicker($.datepicker.regional['it']);
});

问题是,当我单击任何文本框时,会出现日历,但是当我选择日期时,日期只写在表格的第一个文本框中。

谢谢

4

2 回答 2

3

您正在使用类选择器。尝试使用唯一 id 选择器。像这样的东西

$(document).ready(function () {
            $('#<%= ComplyDateTB1.ClientID %>').datepicker($.datepicker.regional['it']);
});
于 2013-05-03T12:34:35.000 回答
0

首先,我根据jQuery Datepicker 教程在此处重现您的错误

问题来了,因为在您的 GridView 上,您的所有文本控件都具有相同的 ID。一个简单的解决方案是删除该 ID,并让 asp.net 自动添加它们,您的问题就会消失,正如您在最终测试中看到的那样:http: //jsfiddle.net/B7EGj/1/ 和工作页面中的代码:

<p>Date: <input type="text" class="dp" /></p>
<p>Date: <input type="text" class="dp" /></p>
<p>Date: <input type="text" class="dp" /></p>
<p>Date: <input type="text" class="dp" /></p>
<p>Date: <input type="text" class="dp" /></p>

<script>
 $(function() {
    $( ".dp" ).datepicker();
  });
</script>

通常控件上的所有 id 都必须是唯一的,所以我不确定 datepicker 是否做错了,即保留打开的控件的 id 并添加日期,但同时基于处理程序打开它。另一方面,当您在 GridView 等中继器中使用模板添加文本框时,asp.net 无法自动为文本框提供不同的 id,并且每个人都有相同的 id。

这是为了避免这个问题而必须做的代码:http: //jsfiddle.net/B7EGj/2/ (所有ID不同)

于 2013-05-03T14:57:37.393 回答