Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / RadioButtonList на стороне клиента - checked, value и text / 23 сообщений из 23, страница 1 из 1
14.11.2012, 11:18:48
    #38037548
evgenybe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
В ASP web-странице имеется RadioButtonList. При клике я вызываю функцию JavaScript в которой получаю переменную:
var rbtLeft = document.getElementById("ctl00_ContentPlaceHolder1_rbtLeft");

Вопрос 1: Как теперь через эту переменную получить выбранные value и text?
Вопрос 2: Как в цикле пройти по всем элементам объекта и проверить в каждом из них:
checked, value и text?

Спасибо!
Евгений Боуден
...
Рейтинг: 0 / 0
14.11.2012, 11:34:51
    #38037582
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
Рекомендую размещать тут html, таким образом например, специалистам PHP, будет легче Вашу проблему понять и помочь

По сабжу http://js-help.net/text/objeknaya_model_documenta/derevo_documenta/dr_svdostupa.php
(хотя я бы лично пользовался тут jQuery (если в Вашем проекте он используется) просто потому что мне так нравится)
...
Рейтинг: 0 / 0
14.11.2012, 12:30:21
    #38037692
evgenybe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
ПаганельРекомендую размещать тут html, таким образом например, специалистам PHP, будет легче Вашу проблему понять и помочь

По сабжу http://js-help.net/text/objeknaya_model_documenta/derevo_documenta/dr_svdostupa.php
(хотя я бы лично пользовался тут jQuery (если в Вашем проекте он используется) просто потому что мне так нравится)

На первое Ваше предложение даю HTML, хотя уверен, что это вряд ли поможет:
Код: html
1.
2.
3.
4.
5.
6.
7.
            <td align="left">
                <asp:RadioButtonList ID="rbtLeft" runat="server" AutoPostBack="True" 
                    DataValueField="HRE_ID" 
                    onselectedindexchanged="rbtLeft_SelectedIndexChanged" Font-Bold="True" 
                    Font-Size="XX-Large">
                </asp:RadioButtonList>
            </td>



На второе - спасибо, но это мне не помогло. получить getElenentByID не проблема. Я и получил, как писал выше:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
    function fRbtListOnClick(obj) {
        debugger;
        var rbtLeft = document.getElementById("ctl00_ContentPlaceHolder1_rbtLeft");
        var rbtRight= document.getElementById("ctl00_ContentPlaceHolder1_rbtRight");
        /* Здесь нужно получить значение и текст 
        этих двух выбранных элементов RadioButtonList и сравнить их
        Может как-то превратить полученную переменную в <SELECT> ???
        */
    }
...
Рейтинг: 0 / 0
14.11.2012, 12:34:10
    #38037703
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
evgenybeдаю HTMLэто не HTML
...
Рейтинг: 0 / 0
14.11.2012, 12:35:24
    #38037706
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
evgenybeэто мне не помоглокак пробовали использовать? какой был исходный код? какой текст ошибки?
...
Рейтинг: 0 / 0
14.11.2012, 12:36:26
    #38037709
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
evgenybeAutoPostBack="True"это зачем?
...
Рейтинг: 0 / 0
14.11.2012, 13:26:29
    #38037820
evgenybe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
Паганельevgenybeдаю HTMLэто не HTML
Это таки HTML только в дизайн-Time
А вот так это выглядит в RunTime:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
                <table id="ctl00_ContentPlaceHolder1_rbtLeft" onclick="fRbtListOnClick(this)" border="0" style="font-size:XX-Large;font-weight:bold;">
	<tr>
		<td><input id="ctl00_ContentPlaceHolder1_rbtLeft_0" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="71099" /><label for="ctl00_ContentPlaceHolder1_rbtLeft_0">чинить</label></td>
	</tr><tr>
		<td><input id="ctl00_ContentPlaceHolder1_rbtLeft_1" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="62171" /><label for="ctl00_ContentPlaceHolder1_rbtLeft_1">видеть</label></td>
	</tr><tr>
		<td><input id="ctl00_ContentPlaceHolder1_rbtLeft_2" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="84901" /><label for="ctl00_ContentPlaceHolder1_rbtLeft_2">распределять</label></td>
	</tr><tr>
		<td><input id="ctl00_ContentPlaceHolder1_rbtLeft_3" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="81698" /><label for="ctl00_ContentPlaceHolder1_rbtLeft_3">проверять</label></td>
	</tr><tr>
		<td><input id="ctl00_ContentPlaceHolder1_rbtLeft_4" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="78756" /><label for="ctl00_ContentPlaceHolder1_rbtLeft_4">гасить</label></td>
	</tr><tr>
		<td><input id="ctl00_ContentPlaceHolder1_rbtLeft_5" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="81076" /><label for="ctl00_ContentPlaceHolder1_rbtLeft_5">ссориться</label></td>
	</tr><tr>
		<td><input id="ctl00_ContentPlaceHolder1_rbtLeft_6" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="85282" /><label for="ctl00_ContentPlaceHolder1_rbtLeft_6">заведовать</label></td>
	</tr><tr>
		<td><input id="ctl00_ContentPlaceHolder1_rbtLeft_7" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="81895" /><label for="ctl00_ContentPlaceHolder1_rbtLeft_7">прекращать</label></td>
	</tr><tr>
		<td><input id="ctl00_ContentPlaceHolder1_rbtLeft_8" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="82404" /><label for="ctl00_ContentPlaceHolder1_rbtLeft_8">выглядеть</label></td>
	</tr><tr>
		<td><input id="ctl00_ContentPlaceHolder1_rbtLeft_9" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="43807" /><label for="ctl00_ContentPlaceHolder1_rbtLeft_9">отвечать</label></td>
	</tr>
</table>




А AutoPostBack="true" - это аттрибут, указывающий, что после клика форму следует отослать на сервер немедленно. Но в данном случае, он срабатывает после клиентской части и к ней отношения не имеет.
...
Рейтинг: 0 / 0
14.11.2012, 13:45:49
    #38037884
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
evgenybeЭто таки HTML только в дизайн-Time
ХТМЛ он и в Африке ХТМЛ... Так вот "то" таки не ХТМЛ...
...
Рейтинг: 0 / 0
14.11.2012, 13:47:54
    #38037889
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
evgenybeА вот так это выглядит в RunTimeвидите, у них name одинаковый? вот по нему бы и выбрать
...
Рейтинг: 0 / 0
14.11.2012, 13:59:54
    #38037925
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
evgenybeВопрос 1: Как теперь через эту переменную получить выбранные value и text?
Вопрос 2: Как в цикле пройти по всем элементам объекта и проверить в каждом из них:
checked, value и text?
Кину пока такой вариант...

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function fRbtListOnClick(Obj) {
	$(Obj).find(':checked').each(function () {
		alert(this.value);
		alert($(this.parentNode).find('label').text());
	});
};
</script>
</head>
<body>
<table id="ctl00_ContentPlaceHolder1_rbtLeft" onclick="fRbtListOnClick(this)" border="0" style="font-size:XX-Large;font-weight:bold;">
	<tr>
		<td>
			<input id="ctl00_ContentPlaceHolder1_rbtLeft_0" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="71099" />
			<label for="ctl00_ContentPlaceHolder1_rbtLeft_0">чинить</label>
		</td>
	</tr>
	<tr>
		<td>
			<input id="ctl00_ContentPlaceHolder1_rbtLeft_1" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="62171" />
			<label for="ctl00_ContentPlaceHolder1_rbtLeft_1">видеть</label>
		</td>
	</tr>
	<tr>
		<td>
			<input id="ctl00_ContentPlaceHolder1_rbtLeft_2" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="84901" />
			<label for="ctl00_ContentPlaceHolder1_rbtLeft_2">распределять</label>
		</td>
	</tr>
</table>
<button>Info</button>
</body>
</html>
...
Рейтинг: 0 / 0
14.11.2012, 16:18:17
    #38038314
evgenybe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
krvsa, спасибо! Проблема в том, что это не PHP. Нужен JavaScript.
...
Рейтинг: 0 / 0
14.11.2012, 16:20:23
    #38038320
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
krvsa
Код: html
1.
<script type="text/javascript">

evgenybeНужен JavaScript.
...
Рейтинг: 0 / 0
14.11.2012, 16:23:38
    #38038332
evgenybe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
ПаганельevgenybeА вот так это выглядит в RunTimeвидите, у них name одинаковый? вот по нему бы и выбрать

Спасибо. Вот что у меня получилось:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
    function fRbtListOnClick(obj) {
 
        var rbtLeft = document.getElementById("ctl00_ContentPlaceHolder1_rbtLeft");
        var rbtRight = document.getElementById("ctl00_ContentPlaceHolder1_rbtRight");
        var rbtL;
        var rbtR;
        //event.srcElement.style.display = "none";
        // event.srcElement.style.color = "red"
        for (i = 0; i < 10; i++) {
            rbtL = "ctl00_ContentPlaceHolder1_rbtLeft_" + i;
            rbtLeft = document.getElementById(rbtL);
            if (rbtLeft.checked) {
                for (j = 0; j < 10; j++) {
                    rbtR = "ctl00_ContentPlaceHolder1_rbtRight_" + j;
                    rbtRight = document.getElementById(rbtR);
                    if (rbtRight.checked) {
                        if (rbtRight.value == rbtLeft.value) {
                            rbtRight.style.display = "none";
                            rbtLeft.style.display = "none";
                        }
                    }
                }
            }
        }
    }



Это работает. Осталась еще одна проблема - добраться до соответствующего Label, который внутри <inpute type="radio">, и сделать и его либо невидимым дибо изменить цвет. А как, если у него есть только for=" и т.д."?
Если не трудно - подскажите.
...
Рейтинг: 0 / 0
14.11.2012, 16:45:12
    #38038387
iConst
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
evgenybe ,
Смысл пользовать серверные контролы, чтобы потом их, через одно место, на клиенте ковырять?
Кста: однажды это может перестать работать...
...
Рейтинг: 0 / 0
14.11.2012, 17:21:46
    #38038449
evgenybe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
iConst evgenybe ,
Смысл пользовать серверные контролы, чтобы потом их, через одно место, на клиенте ковырять?
Кста: однажды это может перестать работать...
Серверные контролы - потому что для них есть работа на сервере (с базой данных в частности) ну и всякие другие штуки.
Организовал изначально все на сервере, но это во-первых тормозит пользователя, во-вторых, задалбывает мигание и перерисовка экрана. Потому решил часть работы делать полностью на клиенте, и только там, где требуется связь с БД, разные поиски в БД и т.п. ту часть на сервере.
...
Рейтинг: 0 / 0
14.11.2012, 17:43:51
    #38038506
evgenybe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
Паганель, извините. Это я должен был послать другому пользователю. Ошибся, а функции удаления комента здесь нет.

А к Вам у меня был вопрос выше. Там где я выложил функцию, но надеюсь, что Вы мне подскажете как обратиться к label, который привязан к этому <input type="radio">
...
Рейтинг: 0 / 0
14.11.2012, 18:00:13
    #38038534
iConst
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
evgenybeiConst...
Серверные контролы - потому что для них есть работа на сервере (с базой данных в частности) ну и всякие другие штуки.
Организовал изначально все на сервере, но это во-первых тормозит пользователя, во-вторых, задалбывает мигание и перерисовка экрана. Потому решил часть работы делать полностью на клиенте, и только там, где требуется связь с БД, разные поиски в БД и т.п. ту часть на сервере.Так часть или полностью? .
Направление верное. Как вариант - при работе с базой нет ничего зазорного, чтобы сгенерить разметку "ручками". Только это делать нужно правильно.
А потом всего-то останется:
HTML (что получилось)
Код: html
1.
2.
3.
<input id="r1" checked="checked" name="R1" type="radio" value="V1" /><label for="r1">Один</label>
<input id="r2"  name="R1" type="radio" value="V2" /><label for="r2">Два</label>
<input id="r3"  name="R1" type="radio" value="V3" /><label for="r3">Три</label>

javascript
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
$('input:radio[name="R1"]').click(function()
{
    var id = this.id;

    $('label').each(function()
    {
        $(this).css('color', '');
        if ($(this).attr('for') == id) $(this).css('color', 'red');
    });
});

И все станет легко и просто... :)
...
Рейтинг: 0 / 0
14.11.2012, 18:08:19
    #38038546
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
а давайте разместим input внутри label
...
Рейтинг: 0 / 0
14.11.2012, 18:24:38
    #38038576
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
evgenybeПроблема в том, что это не PHP. Нужен JavaScript.
А где у меня там ПХП?
...
Рейтинг: 0 / 0
14.11.2012, 18:26:12
    #38038580
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
evgenybeСпасибо. Вот что у меня получилось:
Это называется говнокод...
...
Рейтинг: 0 / 0
14.11.2012, 18:32:57
    #38038595
iConst
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
krvsaЭто называется говнокод... Вот так вот, фейсом да об тейбл...
...
Рейтинг: 0 / 0
14.11.2012, 18:38:25
    #38038611
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
Вариант на "чистом" JS...

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function fRbtListOnClick() {
	var begid='ctl00_ContentPlaceHolder1_rbtLeft_';
	var i=0;
	var o=document.getElementById(begid+i)
	var ol;
	while (o) {
		if (o.checked) {
			ol=o.parentNode;
			ol=ol.getElementsByTagName('label')[0];
			alert(i+').'+o.value+'='+ol.innerHTML);
		};
		o=document.getElementById(begid+(++i));
	};
};
</script>
</head>
<body>
<table id="ctl00_ContentPlaceHolder1_rbtLeft" onclick="fRbtListOnClick()" border="0" style="font-size:XX-Large;font-weight:bold;">
	<tr>
		<td>
			<input id="ctl00_ContentPlaceHolder1_rbtLeft_0" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="71099" />
			<label for="ctl00_ContentPlaceHolder1_rbtLeft_0">чинить</label>
		</td>
	</tr>
	<tr>
		<td>
			<input id="ctl00_ContentPlaceHolder1_rbtLeft_1" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="62171" />
			<label for="ctl00_ContentPlaceHolder1_rbtLeft_1">видеть</label>
		</td>
	</tr>
	<tr>
		<td>
			<input id="ctl00_ContentPlaceHolder1_rbtLeft_2" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="84901" />
			<label for="ctl00_ContentPlaceHolder1_rbtLeft_2">распределять</label>
		</td>
	</tr>
</table>
</body>
</html>

...
Рейтинг: 0 / 0
16.11.2012, 16:28:26
    #38041819
evgenybe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RadioButtonList на стороне клиента - checked, value и text
krvsaВариант на "чистом" JS...

+
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function fRbtListOnClick() {
	var begid='ctl00_ContentPlaceHolder1_rbtLeft_';
	var i=0;
	var o=document.getElementById(begid+i)
	var ol;
	while (o) {
		if (o.checked) {
			ol=o.parentNode;
			ol=ol.getElementsByTagName('label')[0];
			alert(i+').'+o.value+'='+ol.innerHTML);
		};
		o=document.getElementById(begid+(++i));
	};
};
</script>
</head>
<body>
<table id="ctl00_ContentPlaceHolder1_rbtLeft" onclick="fRbtListOnClick()" border="0" style="font-size:XX-Large;font-weight:bold;">
	<tr>
		<td>
			<input id="ctl00_ContentPlaceHolder1_rbtLeft_0" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="71099" />
			<label for="ctl00_ContentPlaceHolder1_rbtLeft_0">чинить</label>
		</td>
	</tr>
	<tr>
		<td>
			<input id="ctl00_ContentPlaceHolder1_rbtLeft_1" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="62171" />
			<label for="ctl00_ContentPlaceHolder1_rbtLeft_1">видеть</label>
		</td>
	</tr>
	<tr>
		<td>
			<input id="ctl00_ContentPlaceHolder1_rbtLeft_2" type="radio" name="ctl00$ContentPlaceHolder1$rbtLeft" value="84901" />
			<label for="ctl00_ContentPlaceHolder1_rbtLeft_2">распределять</label>
		</td>
	</tr>
</table>
</body>
</html>



Спасибо! Это работает!!
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / RadioButtonList на стороне клиента - checked, value и text / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]