Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   RadioButton в JavaScript (https://javascript.ru/forum/dom-window/53667-radiobutton-v-javascript.html)

Kamill 12.02.2015 21:34

RadioButton в JavaScript
 
Здравствуйте!

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

Имеется ASP .NET проект. Не MVC, не Ajax и т.д. Чистый ASP .NET.

На форме размерено несколько RadioButton, вот так:
<asp:RadioButton ID="rbtVar1" GroupName="Variants" name="r" Text="Дата рождения"
runat="server" Checked="True" /><br />
<asp:RadioButton ID="rbtVar2" GroupName="Variants" name="r" Text="Дата начала работ"
runat="server" /><br />
<asp:RadioButton ID="rbtVar3" GroupName="Variants" name="r" Text="Пятница до вечеринки"
runat="server" /><br />


А также текстовое поле. На нем висит CustomValidator, запускающий код на JavaScript. И, хоть ты лопни, не могу достучаться до RadioButton'ов в этом скрипте.

Делаю так:

<script type="text/javascript">
function DateValidate(source, argum) {
var inp = document.getElementsByName("r");

for (var i = 0; i < inp.length; i++) {
alert(" " + i + " " + inp[i].text + " " + inp[i].checked); // чтобы хотя бы увидеть, что происходит
}
...
argum.IsValid = false; // чтобы сервер не запускать пока
}
</script>

inp.length == 3 - все в порядке.
inp[i].text, inp[i].checked и прочие варианты печатает undefined. Проверка if (inp[0].checked) не срабатывает, даже когда первый выбран.

Что я делаю не так?

ksa 12.02.2015 21:47

Цитата:

Сообщение от Kamill
Имеется ASP .NET проект.
...
И, хоть ты лопни, не могу достучаться до RadioButton'ов в этом скрипт

JS не работает с элементами ASP.NET :no:
Т.ч. ты либо раздел правильно выбирай... Либо показывай хтмл.

Kamill 12.02.2015 21:51

Извиняйте, я сам шарпей, а c ASP .NET сегодня первый день ковыряюсь.
Я вас правильно понял, что мне RadioButton'ы нужно добавлять в виде <input type="radio" ... > вместо <asp:RadioButton ... >?
Если да, то будет ли с ними работать мой серверный код C# ?

ksa 12.02.2015 21:56

Цитата:

Сообщение от Kamill
Я вас правильно понял, что мне RadioButton'ы нужно добавлять в виде <input type="radio" ... > вместо <asp:RadioButton ... >?

Начнем с того, что раздел "Элементы интерфейса" как-то слабо связан с элементами ASP.NET...
Как они интерпретируются в конечный хтмл знают только ASP.NETчики...

Как ты будешь создавать страницу это твое дело. :) Но нужно точно знать с каким именно хтмл тебе придется работать. ;) Посмотри на готовую страницу (тот же исходный код) в браузере и многое может для тебе прояснится...

Kamill 12.02.2015 22:04

Спасибо! Ваш совет очень помог. Я посмотрел Код Страницы в браузере и увидел, что мои ASP .NET'овские RadioButton'ы разворачиваются вот в это:

<span name="r"><input id="rbtVar1" type="radio" name="Variants" value="rbtVar1" checked="checked" /><label for="rbtVar1">Дата рождения</label></span><br />
<span name="r"><input id="rbtVar2" type="radio" name="Variants" value="rbtVar2" /><label for="rbtVar2">Дата начала работ</label></span><br />
<span name="r"><input id="rbtVar3" type="radio" name="Variants" value="rbtVar3" /><label for="rbtVar3">Пятница до вечеринки</label></span><br />


Удивился, что name у них равно "Variants" (хотя в ASP не так было). Подставил в скрипт :
var inp = document.getElementsByName("Variants");
и свойство checked заработало. Я не знал, что тут будут такие подставы, как переименование полей ASP в конечном HTML

ksa 12.02.2015 22:06

Цитата:

Сообщение от Kamill
Я не знал, что тут будут такие подставы, как переименование полей ASP в конечном HTML

Это не подстава... :D
Просто такая вот интерпретация. Это ты еще с ZEN не работал... :lol: Там и не так еще интерпретируют!

ksa 12.02.2015 22:08

Цитата:

Сообщение от Kamill
Удивился, что name у них равно "Variants" (хотя в ASP не так было)

Как раз так и было!
Цитата:

Сообщение от Kamill
GroupName="Variants"

;)


Часовой пояс GMT +3, время: 11:49.