Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Помогите с JScript please? / 13 сообщений из 13, страница 1 из 1
11.06.2006, 14:23
    #33785379
NEKRASSOV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с JScript please?
Прошу Хелпа!
Хочу сделать, чтобы при изменении в листбоксе под именем "TN" (т.е. обработать его событие "OnSelectedIndexChanged") изменялось свойство "visibility" у 2-х других контролов. помогите найти ошибку в коде?:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
			<asp:listbox id="TN" 
			OnSelectedIndexChanged="if (this.Value != 1){
document.getElementById(LTS).setAttribute(visibility,false);
document.getElementById(TS).setAttribute(visibility,false);
}
else {
document.getElementById(LTS).setAttribute(visibility,true);
document.getElementById(TS).setAttribute(visibility,true);
}" 
			style="Z-INDEX: 105; LEFT: 75px; POSITION: absolute; TOP: 58px"
				tabIndex="4" runat="server" Height="48px" Width="72px" Font-Size="XX-Small">
				<asp:ListItem Value="1" Selected="True">Значение1</asp:ListItem>
				<asp:ListItem Value="2">Значение2</asp:ListItem>
				<asp:ListItem Value="3">Значение3</asp:ListItem>
...
Рейтинг: 0 / 0
13.06.2006, 12:54
    #33787301
SkyLight
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с JScript please?
Вообще-то, TN (как, собссно и LTS, TS и прочие твои ID) - это СЕРВЕРНЫЕ ID элементов. На клиенте всё выглядит несколько иначе (насколько именно - посмотри код полученной страницы в браузере, узнаешь). Я не знаю, покатит или нет, но можно попробовать использовать свойство ClientID на сервере, т.е. вместо твоего
Код: plaintext
1.
document.getElementById(LTS).setAttribute(visibility,false);
прописать
Код: plaintext
1.
document.getElementById(LTS.ClientID).setAttribute(visibility,false);
и т.д.
...
Рейтинг: 0 / 0
14.06.2006, 06:36
    #33789052
NEKRASSOV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с JScript please?
SkyLight: Спасибо - не помогло. Пробовал также и вынести скрипт в отдельный файл. А вообще возможно ли обрабатывать события cерверного контрола еще и на стороне клиента? Как это примерно должно выглядеть?
...
Рейтинг: 0 / 0
14.06.2006, 07:07
    #33789062
ivenhoe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с JScript please?
Так работает?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
			<asp:listbox id="TN" 
			OnSelectedIndexChanged="if (this.Value != 1){
document.getElementById('LTS').setAttribute('visibility',false);
document.getElementById('TS').setAttribute('visibility',false);
}
else {
document.getElementById('LTS').setAttribute('visibility',true);
document.getElementById('TS').setAttribute('visibility',true);
}" 
			style="Z-INDEX: 105; LEFT: 75px; POSITION: absolute; TOP: 58px"
				tabIndex="4" runat="server" Height="48px" Width="72px" Font-Size="XX-Small">
				<asp:ListItem Value="1" Selected="True">Значение1</asp:ListItem>
				<asp:ListItem Value="2">Значение2</asp:ListItem>
				<asp:ListItem Value="3">Значение3</asp:ListItem>
...
Рейтинг: 0 / 0
14.06.2006, 08:46
    #33789131
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с JScript please?
хех... может я скажу глупость, но вообще то (на сколько я понимаю) у серверного компонента ListBox существует СЕРВЕРНОЕ событие OnSelectedIndexChanged... соответственно его надо обрабатывать НА СЕРВЕРЕ но никак ни на клиенте. Если есть желание что то выполнить при этом на клиенте нужно в серверном событии вашего контрола регистрировать StartUp скрипт и прописывать для него (контрола) AutoPostBack. Либо не парить мозг и, атрибуты типа visibility других серверных контролов обрабатывать так же на стороне сервера в серверном событии...
...
Рейтинг: 0 / 0
14.06.2006, 09:49
    #33789258
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с JScript please?
кстати, в догонку, если уж пытаешься изменять свойства контролов то неплохо бы посмотреть как это выглядит на примере... если мне не изменяет склероз ;) то в CSS у visibility нет значений true/false - есть значения visible/hidden - даже в клиентском скрипте ты уехал в серверные значения... как то неправильно всё это ;)
...
Рейтинг: 0 / 0
14.06.2006, 10:12
    #33789329
NEKRASSOV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с JScript please?
vladgrig:
Да, это событие я на серверной стороне настроил без проблем. НО... чтобы не "гонять" форму туда-сюда только для того, чтобы скрыть пару контролов - это ведь можно реализовать сразу на клиенте?
А насчет - visibility - спасибо - очень даже в дырочку. Именно не false/true а visible/hidden. Щас попробуем...
...
Рейтинг: 0 / 0
14.06.2006, 10:19
    #33789349
NEKRASSOV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с JScript please?
vladgrigЕсли есть желание что то выполнить при этом на клиенте нужно в серверном событии вашего контрола регистрировать StartUp скрипт и прописывать для него (контрола) AutoPostBack...
Мона поподробнее с этого места? Как регистрируется StartUp скрипт и прописывается AutoPostBack? Это в файле .vb? Можно пару строк для наглядности, если не трудно?
...
Рейтинг: 0 / 0
14.06.2006, 10:38
    #33789404
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с JScript please?
гонять форму при таком подходе всё равно придётся - это во первых...
во вторых вот пример (правда не очень наглядный, но др. под рукой не было)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim cs As ClientScriptManager = Page.ClientScript
        Dim cstext As String
        Dim csname As String
        
        csname = "CallServer"
        If (Not cs.IsClientScriptBlockRegistered(Me.GetType(), csname)) Then
            cstext = "function CallServer(arg, context) { " & cs.GetCallbackEventReference(Me, "arg", "ReceiveServerData", "context") & "} ;"
            cs.RegisterClientScriptBlock(Me.GetType(), csname, cstext, True)
        End If
там вставляется вместо cs.RegisterClientScriptBlock - что то типо cs.RegisterStartUpScript - это в ASP.NET 2.0 для 1.1 незнаю будет ли такое.
P.S. вообще можно использовать простой Select (HTML control) прописав ему runat="server" - тогда появиться возможность исполнять и клиентские события и серверные - вариантов много - надо смотреть конкретную задачу (пробовать на ней)...
...
Рейтинг: 0 / 0
14.06.2006, 11:18
    #33789556
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с JScript please?
кстати, можно использовать AJAX и прописывать серверные события - форма перегружаться не будет, но будут ограничения по броузерам ;)
...
Рейтинг: 0 / 0
14.06.2006, 12:00
    #33789744
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с JScript please?
вот почитай
P.S. можно вообще попробовать прописать каждому итему серверного листа своё клиентское событие типо ListBox1.Items.Item(0).Attributes.Add("onclick", "javascript:la-la-la") - сам не попробовал, но думаю пройдёт ;)
...
Рейтинг: 0 / 0
14.06.2006, 12:16
    #33789787
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с JScript please?
vladgrig
P.S. можно вообще попробовать прописать каждому итему серверного листа своё клиентское событие типо ListBox1.Items.Item(0).Attributes.Add("onclick", "javascript:la-la-la") - сам не попробовал, но думаю пройдёт ;)хорошее предложение... но в контроле присутствует баг (для 1.1), подробнее http://support.microsoft.com/default.aspx?scid=kb;en-us;309338

по сабжу:
Код: plaintext
ListBox1.Attributes["onchange"] = "OnChangeHandler(this)";
Код: plaintext
1.
2.
3.
4.
<script language="javascript">
	function OnChangeHandler(obj)	{
		alert(obj.options[obj.selectedIndex].value);
	}
</script>
думаю как воспользоваться, что бы установить visibility разберетесь

ps. ajax можно пока не трогать :)
...
Рейтинг: 0 / 0
22.06.2006, 02:48
    #33807328
NEKRASSOV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с JScript please?
profil vladgrig
P.S. можно вообще попробовать прописать каждому итему серверного листа своё клиентское событие типо ListBox1.Items.Item(0).Attributes.Add("onclick", "javascript:la-la-la") - сам не попробовал, но думаю пройдёт ;)хорошее предложение... но в контроле присутствует баг (для 1.1), подробнее http://support.microsoft.com/default.aspx?scid=kb;en-us;309338

по сабжу:
Код: plaintext
ListBox1.Attributes["onchange"] = "OnChangeHandler(this)";
Код: plaintext
1.
2.
3.
4.
<script language="javascript">
	function OnChangeHandler(obj)	{
		alert(obj.options[obj.selectedIndex].value);
	}
</script>
думаю как воспользоваться, что бы установить visibility разберетесь

ps. ajax можно пока не трогать :)

Давно не смотрел. Отъезды-переезды... У меня как раз ASP.NET 1.1 Таким образом этотвариант для меня подходит?
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Помогите с JScript please? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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