По какой-то причине я не могу использовать 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>

он меняет ваш идентификатор с "#datepicker" на "form1_ctl01_ctl05_datepicker" или что-то еще, когда вы используете runat = 'server'
Обновлено: В качестве решения вы можете подобрать его на основе класса css, а не идентификатора
<input id='datepicker' runat='server' class='datepicker' />
$(document).ready(function(){
$(".datepicker").datepicker({ showOn: "both",
buttonImage: "/Content/img/calendar.gif",
buttonImageOnly: true });
});
У элементов управления asp.net 'server' (runat = server) атрибут id изменен в зависимости от различных контейнеров, главных страниц и т. д., в которые встроен элемент управления. Это сделано для того, чтобы несколько элементов управления имели одинаковый 'id' в asp Источник .net, чтобы не нарушать правило XHTML о значениях идентификаторов, не может повторяться
Для элементов управления с runat = "server" aspnet генерирует собственные, довольно уродливые идентификаторы для визуализированных элементов управления html.
Если ваш скрипт находится на реальной странице, вы можете заменить
$ ("# datepicker") с $ ("# <% = datepicker.ClientID%>"),
который будет выводить искаженный идентификатор, который генерирует aspnet, или, как предложил Джимми, вместо этого нацелить его на класс css.
Для потомков:
При использовании тега runat='server' добавьте clientidmode='static' в тег элемента, чтобы предотвратить искажение сгенерированного идентификатора. В сложных или вложенных формах это может повлиять на уникальность ваших идентификаторов элементов управления, поэтому по умолчанию они имеют префикс идентификатора родительского элемента (ов).
p.s. Класс css, вероятно, лучший способ (IMHO) обрабатывать датпикеры, поэтому принятый ответ выглядит нормально.
поэтому, когда я ставлю сервер runat, он меняет идентификатор на ct101_ct105_datepicker? .. и я не понимаю, что вы имеете в виду под второй частью