0 / 0 / 1
Регистрация: 05.07.2007
Сообщений: 140
|
|
1 | |
При изменении значения одного select нужно подгрузить в другой select соответствующие данные, которые лежат в базе06.01.2008, 07:49. Показов 2987. Ответов 5
Метки нет (Все метки)
Прошу прощения за возможный оффтопик.
В форме есть два поля select. При изменении значения одного select нужно подгрузить в другой select соответствующие данные, которые лежат в базе. Нужно сделать какую-нибудь функцию OnChange или OnSelect. Надеюсь понятно объяснил суть вопроса. Мне попадались подобные примеры на JScript, но я не сильно рулю в яве, хотя разобраться можно. Может быть кто сможет популярно объяснить мне принцип построения подобной функции.
0
|
06.01.2008, 07:49 | |
Ответы с готовыми решениями:
5
Как при изменении одного <select> подгрузить в другой <select> данные... При выборе какого-то значения в select'e нужно показывать другой select рядом Как изменить значение одного select-а при изменении другого select-а? Изменение данных одного select при изменении другого select |
Sergik
|
|
06.01.2008, 09:58 | 2 |
если select большой и данных много и берутся они динамически с сервера, то проще всего перезагрузка формы
если нет: для IE: Код
function DelSelect(id) //удаляет все элементы из select { var i; var sel=document.all(id); for(i=sel.length-1;i>=0;i--) { sel.remove(i); } } function AddItem(id,value,text) //добавляет элемент в указанный select { var sel=document.all(id); var oOption = document.createElement('OPTION'); oOption.text = text; oOption.value = value; sel.add(oOption,sel.length); } Код
function DelSelect(id) { var i; var sel=eval('document.form1.'+id); for(i=sel.length-1;i>=0;i--) { sel.options[i]=null; } } function AddItem(id,value,text) { var sel=eval('document.form1.'+id); sel.options[sel.length] = new Option(text,value) } |
0 / 0 / 1
Регистрация: 05.07.2007
Сообщений: 140
|
|
06.01.2008, 14:42 [ТС] | 3 |
Я нашел неплохой пример на JScript, по моему - то,что нужно. Если получится скину код.
Дополнительный вопрос. Не будет ли каких нибудь траблов, если я код клиентского скрипта на JScript выведу в тело страницу серверным скриптом на VBScript. Наподобие такого варианта: Код
<%Response.Write '<script language='Javascript'>'&vbCrLf Response.Write '<!--'&vbCrLf Response.Write 'function bla-bla-bla'&vbCrLf %> и т.д.
0
|
Sergik
|
|
06.01.2008, 14:47 | 4 |
не будет, только выводи не
Response.write('<script...') а Response.write('<scr'&'ipt...') |
0 / 0 / 1
Регистрация: 05.07.2007
Сообщений: 140
|
|
07.01.2008, 06:44 [ТС] | 5 |
Обещаный код. Я использую два рекордсета. Если что коряво сделано, буду рад замечаниям.
Суть задачи. В базе есть поля field1 и field2. Field1 - допустим, производитель товаров, field2 - названия товаров. Количество записей в обоих полях неизвестно. Необходимо создать форму с выпадающими меню, где при изменении первого со значениями field1, во второе подставляются соответствующие значения field2. Данных не много, но постоянно изменяются. Изначальный код статического JScript, который работает с заранее известными параметрами: srchform - имя формы prName - имя select со значениями field2 Код
<script language='Javascript'> <!-- function OnSelect(select) {switch (select.selectedIndex) {case 0:with (document.srchform.prName){ options.length = 0; options[0] = new Option('Все','all'); selectedIndex = 0;}; break; case 1: with (document.srchform.prName) { options.length = 0; options[0] = new Option('Все','all'); options[options.length] = new Option('Product1','Product1'); options[options.length] = new Option('Product2','Product2'); selectedIndex= 0; }; break; case 2: и т.д. } } --> </script> Код
<%Set con=Server.CreateObject('ADODB.Connection') con.Open 'connection-string' Set rs = Server.CreateObject('ADODB.Recordset') Set rs2 = Server.CreateObject('ADODB.Recordset') '--- выбираем только тех производителей товары которых есть в наличии SQL = 'Select DISTINCT(field1) from table Where field1=true ORDER BY field1' rs.Open SQL, con, 3 TotalCase = rs.RecordCount ' определяем количество условий CASE для Jscript%> Код
<script language='Javascript'> <!-- function OnSelect(select) {switch (select.selectedIndex) {case 0:with (document.srchcar.mark){options.length = 0;options[0] = new Option('Все','all');selectedIndex = 0;}; break; <% CntCase = 1 ' ---определяем счетчик CASE do while CntCase <= TotalCase CompName = rs('field1').value ' ---определяем текущего производителя Response.Write 'case ' & CntCase &':'& vbCrLf ' --- выводим CASE Response.Write 'with (document.srchform.prName) {' &vbCrLf Response.Write 'options.length = 0;'&vbCrLf Response.Write 'options[0] = new Option('Все','all');'&vbCrLf ' ----в случае если товар не выбран ' ---- выбираем названия товаров которые соответствуют текущему производителю SQL2 = 'Select DISTINCT(field2) from table Where field2=true and field1=''&CompName&'' ORDER BY field2' rs2.Open SQL2, con do while not rs2.EOF ' --- выводим список товаров для <option> Response.Write 'options[options.length] = new Option(''&rs2('field2').value&'',''&rs2('field2').value&'');'&vbCrLf rs2.MoveNext Loop rs2.Close Response.Write 'selectedIndex= 0;'&vbCrLf Response.Write '}; break;'&vbCrLf rs.MoveNext CntCase = CntCase+1 Loop%> }}--> </script> [code] <form name='srchform' action=/result.asp method=get> <table><tr><td>Производитель</td><td width='50%'> <select name='proizvoditel' onChange='javascript:OnSelect(this)'> <option value='all' selected>Все </option> <%rs.MoveFirst Do while not r
0
|
0 / 0 / 0
Регистрация: 21.02.2008
Сообщений: 7
|
|
29.06.2009, 09:56 | 6 |
подскажите плиз как добавить третью позицию
0
|
29.06.2009, 09:56 | |
29.06.2009, 09:56 | |
Помогаю со студенческими работами здесь
6
Нужно сделать так чтобы при выборе некоторых значений в первом select, изменялись значения второго select Какое условие сделать чтобы от выбранного значения в select другой select принимал определенные значения? Перекидывание данных из одного <select>...</select> в другой Событие при изменении значения select Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |