Javascript и Asp.net веб-элементы управления - PullRequest
1 голос
/ 07 мая 2009

У меня есть пользовательский веб-элемент управления, который генерирует следующий HTML-код на клиенте.

Я хочу сослаться на конкретный элемент управления RadioButton, используя JavaScript.

Я не уверен, как это сделать, так как идентификатор RadioButton генерируется asp.net.

Например, я даю идентификатор RadioButton = 1_RadioButton

asp.net генерирует ID = ctl00_ContentPlaceHolder1_Material_1_RadioButton

как этот код JavaScript может найти элементы управления Radio Button?

    <script type="text/javascript">
        $(document).ready(function() {
            if (document.getElementById("1_RadioButton").checked) {
                $("#1_other").hide();
            }
        });    
    </script>

Вот что asp.net генерирует для клиента.

    <input id="ctl00_ContentPlaceHolder1_Material_1_RadioButton" type="radio" name="ctl00$ContentPlaceHolder1$Material$Academic" value="1_RadioButton" onclick="javascript:$('#1_other').show('fast');" />

    <label for="ctl00_ContentPlaceHolder1_Material_1_RadioButton">Yes</label>

    <input id="ctl00_ContentPlaceHolder1_Material_2_RadioButton" type="radio" name="ctl00$ContentPlaceHolder1$Material$Academic" value="2_RadioButton" checked="checked" onclick="javascript:$('#1_other').hide('fast');" />

    <label for="ctl00_ContentPlaceHolder1_Material_2_RadioButton">No</label>

    <input id="ctl00_ContentPlaceHolder1_Material_3_RadioButton" type="radio" name="ctl00$ContentPlaceHolder1$Material$Academic" value="3_RadioButton" onclick="javascript:$('#1_other').hide('fast');" />

    <label for="ctl00_ContentPlaceHolder1_Material_3_RadioButton">Uncertain</label>

    <div id='1_other'>
         <input name="ctl00$ContentPlaceHolder1$Material$4_TextBox" type="text" value="bbb chabng" id="ctl00_ContentPlaceHolder1_Material_4_TextBox" />
   </div>

Ответы [ 4 ]

6 голосов
/ 07 мая 2009

Если этот код находится в файле .aspx, используйте вместо него <% = MyRadioButton.ClientID%>, и механизм рендеринга ASP.NET правильно предоставит для вас идентификатор.

Обновление: Например:

<script type="text/javascript">
    $(document).ready(function() {
        if ($get("<%= MyRadioButton.ClientID %>").checked) {
            $("#1_other").hide();
        }
    });    
</script>
1 голос
/ 07 мая 2009
var radioButton = document.getElementById("<%= 1_RadioButton.ClientID %>");

А потом иди оттуда. Примечание. Я не уверен в кавычках.

0 голосов
/ 14 апреля 2012

Очень просто, просто установите clientidmode веб-элемента управления на статический (clientidmode="static"), и вы можете быть уверены, что asp.net сохранит ваш ID, как видно в интерфейсе дизайнера.

0 голосов
/ 07 мая 2009

Я написал в блоге , как это сделать :

Скажем, у вас есть контроль над этикеткой Ваша страница:

Сгенерированный вывод HTML и идентификатор этого элемента управления может выглядеть это:

<span id="ctl00_ContentPlaceHolder1_Label1"></span>

К сожалению, сгенерированный идентификатор ct100_ContentPlaceHolder1_Label1 не является всегда будет одинаковым от сборки строить. Так что пытаясь выбрать его как это:

$("#ct100_ContentPlaceHolder1_Label1").hide();

в конце концов сломается и не будет скрыть элемент управления меткой.

Хитрость заключается в использовании ASP.NET внутри JQuery селектор. Label1.ClientID будет возвращать сгенерированный идентификатор каждый раз. Мы объединить ASP.NET и JQuery в один строка как это:

$("#<%= Label1.ClientID %>").hide();

Получит сгенерированный идентификатор Контроль над этикетками каждый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...