ASP.NET RadioButtonList и прогрессивное улучшение - PullRequest
1 голос
/ 27 августа 2010

У меня есть RadioButtonList, для которого AutoPostBack установлен в True и обрабатывается на стороне сервера:

<asp:radiobuttonlist ID="myRBL" OnSelectedIndexChanged="MyRBL_SelectedIndexChanged"
    RepeatDirection="Horizontal" AutoPostBack="True" runat="server">
    <asp:ListItem Selected="True">Choice 1</asp:ListItem>
    <asp:ListItem>Choice 2</asp:ListItem>
</asp:radiobuttonlist>

Я хочу «постепенно улучшить» это, добавив функцию JavaScript с атрибутом OnClick. После добавления OnClick = "myFunction ();" серверный код больше не вызывается, когда в браузере отключен JavaScript.

Кто-нибудь есть способ обойти это (я должен реализовать IPostBackEventHandler или я что-то упускаю)?

ОБНОВЛЕНИЕ: 08-26-2010 4:31 вечера. Тихий океан

По-видимому, ASP.NET этот элемент управления не может отправить с отключенным JavaScript. У кого-нибудь есть подробное решение этого вопроса?

Ответы [ 2 ]

1 голос
/ 27 августа 2010

AutoPostBack использует JavaScript для отправки сообщений после нажатия переключателя. При установке атрибута onclick это поведение перезаписывается, поэтому необходимо добавить дополнительный обработчик события к событию click.

Насколько я знаю, не существует простого способа сделать это на обычном JavaScript, поэтому я бы порекомендовал использовать jQuery:

$('#radioButtonId').click(myFunction);
1 голос
/ 27 августа 2010

Единственный способ проверить, включен ли у пользователя javascript, на стороне клиента.

Тогда лучше всего добавить функцию на стороне клиента, а не в коде сервера.jQuery справляется с этим довольно хорошо, например:

$(function() {
  $('input[type=radio]').click(myFunction);
});

Если вы не используете jquery, вы можете сделать document.getElementById() и все такое, чтобы назначить обработчики щелчков.

Таким образом, еслиу клиента нет javascript, радиокнопки совершенно нетронуты.

...