JQuery DatePicker

По какой-то причине я не могу использовать runat="server"в качестве атрибута для тега ввода, чтобы jQuery отображал кнопку изображения и работал. Что-то не так без runat="server"? Работает нормально. И я хочу, чтобы формат был «гггг / мм / дд», а также он мне нужен для сервера, потому что именно здесь я проверяю, является ли введенная вручную дата действительной и соответствует ли она принятому формату. Я действительно хочу использовать, asp:buttonно так как я не могу использовать runat="server"атрибут, я не знаю, что делать, так как это требуется для управления asp

<script language="javascript" type="text/javascript">

  $(document).ready(function(){
    $("#datepicker").datepicker({ showOn: "both", 
                                  buttonImage: "/Content/img/calendar.gif", 
                                  buttonImageOnly: true });
  }); 

</script>
11.12.2008 20:45:25
3 ОТВЕТА
РЕШЕНИЕ

он меняет ваш идентификатор с "#datepicker" на "form1_ctl01_ctl05_datepicker" или что-то еще, когда вы используете runat = 'server'

РЕДАКТИРОВАТЬ: Для решения, вы можете выбрать его на основе класса CSS, а не ID

<input id='datepicker' runat='server' class='datepicker' />

$(document).ready(function(){
$(".datepicker").datepicker({ showOn: "both", 
                              buttonImage: "/Content/img/calendar.gif", 
                              buttonImageOnly: true });
}); 
8
11.12.2008 21:52:17
поэтому, когда я ставлю сервер runat, он меняет идентификатор на ct101_ct105_datepicker? .. и я не понимаю, что вы подразумеваете под второй частью
TStamper 11.12.2008 20:56:24
Для «серверных» элементов управления asp.net (runat = server) атрибут id изменен в зависимости от различных контейнеров, главных страниц и т. д., в которые встроен элемент управления. Это позволяет обойтись при наличии нескольких элементов управления с одинаковым «id» в asp источник .net не нарушает правила идентификатора XHTML, повторение правил невозможно
Bryan Rehbein 11.12.2008 21:58:32

Для элементов управления с runat = "server" aspnet генерирует свои собственные, довольно уродливые идентификаторы для визуализированных элементов управления html.

Если ваш скрипт находится на реальной странице, вы можете заменить
$ ("# datepicker") на $ ("# <% = datepicker.ClientID%>"),
который выведет искаженный идентификатор, сгенерированный aspnet, или, как предложил Джимми, вместо этого нацельтесь на класс css.

2
11.12.2008 20:59:28

Для потомков:

При использовании runat='server'тега добавьте clientidmode='static'тег элемента, чтобы предотвратить искажение сгенерированного идентификатора. В сложных или вложенных формах это может мешать уникальности ваших контрольных идентификаторов, поэтому по умолчанию они имеют префикс с идентификатором родительского (ых) элемента (ов).

ps Класс css, вероятно, является лучшим способом (IMHO) для обработки средств выбора даты, поэтому принятый ответ выглядит хорошо.

0
12.07.2012 22:21:29