• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

ссылка на JS

  • Автор темы Guest_
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest_

Народ, есть проблема.
Суть:
есть форма с двумя выпадающими списками и кнопкой отправить / ок.

В первом список месяцев, во втором годов.

Нужно:

если я выбрал скажем, июнь 2004, то при нажатии на ОК перейти на урл - www.domain.com/2004/06/

можно конечно на PHP это реализовать, но хочется на лету при помощи JS
 
D

dex0r

очень просто B)

ява скрипт:
Код:
<script>
function goto() {
document.location.href = 'http://www.domain.com/' + document.all.main.year.value + '/' + document.all.main.month.value + '/';
}

year и month - это элементы списка (<select name="year" ...>)

main - имя формы (<form name="main" method="post" ..)

ну а кнопочку мона такую забабахать ;)
<input type="image" style="cursor: hand" onClick="goto()" src="img/button.gif" name="submit">
 
G

Guest

dex0r

selecta то два, а не один.

К тому же скорее всего он будет таким образом реализован:

Код:
<script> 
var data=("2003/октябрь,2003/ноябрь, 2004/январь, 2004/ноябрь,2004/декабрь").split(","); 

function setMonthData() 
{ var m = document.theForm.month; 
var y = document.theForm.year.options[document.theForm.year.selectedIndex].text + "/"; 
var k=0; 
for (j=0; j<data.length; j++) 
{ if (data[j].indexOf(y) >= 0) 
  m.options[k++] = new Option(data[j].substring(data[j].indexOf("/")+1)); 
} 
if (k == 0) 
 m.options[k++] = new Option("=== Выберите год ==="); 
for (j=m.options.length-1; j>=k; j--) 
 m.options[j]=null; 
} 
</script> 
<form name=theForm> 
Год: 
<br><select name="year" onChange="setMonthData();"> 
<option>2003 
<option selected>2004 
</select> <br> 
Месяц: 
<br><select name="month"></select> 
</form>

Т.е. второй будет зависить от первого,
т.е. если сейчас октябрь, то естественно, если в одном выбран 2004 год, то во втором не должно быть ноября и т.д.

Понимаешь?

Вот такая марока B)
 
D

dex0r

Guest, можно и так ;) кто спорит ;) кстати, <option> лучше закрывать, а то могут быть и глюки ;) (<option>value text</option>)
 
A

admin

или так
Код:
<script type="text/javascript"> 
var d=document,url="/" 
function goTo(){ 
var F=d.F 
localtion.href=url + F.y.options[F.y.selectedIndex].text + '/' + F.m.options[F.m.selectedIndex].text) 
} 
function writeSelect(frst,lst){ 
lst++ 
for(var i=frst;i<lst;i++){ 
d.write('<option>') 
if(i<10)d.write('0') 
d.write(i) 
} 
d.write('</select>') 
} 
</script> 

<form name="F"> 
<script type="text/javascript"> 
d.write('<select name="y" onChange="goTo()">') 
writeSelect(2000,2004) 
d.write('<select name="m" onChange="goTo()">') 
writeSelect(1,12) 
</script> 
</form>
 
G

Guest

dex0r
это примерный код.
и он не доделаный!
там нет кнопки "перейти", которая будет вести на нужный урл, т.е. www.www.www/2004/10/ или что выберет пользователь.

вот тут и ломаю голову
 
G

Guest

Серёга

твой код выдает ошибки и не выводится на экран
 
G

Guest

Серёга

сверь свой с тем что сейчас на сайте.
Приведенный мною код тоже не полностью отображен.
 
D

dex0r

Суть:
есть форма с двумя выпадающими списками и кнопкой отправить / ок.

два списка + кнопка... или я чего-то не понял? вопрос: чего вы паритесь? понты? :)
 
G

Guest

dex0r

Никаких понтов.
В первом посте описана задача,
ниже код, как часть ее решения. но загвоздка в том что бы написать функцию, которая бы брала данные их выбранных списков и при нажатии ОК пользователь переходил на нужный урл.

Это моя головная боль.

Если можешь помоги.
 
D

dex0r

Код:
<script>
function goto() {
document.location.href = 'http://www.domain.by/' + document.all.main.year.value + '/' + document.all.main.month.value + '/';
}
</script>

<form name="main" method="POST" action=""> 
Год: <select name="year"> 
<option>2003</option> 
<option selected>2004</option>
</select><br /> 
Месяц: <select name="month">
<option value='01'>Январь</option> 
<option value='02'>Февраль</option> 
<option value='03'>Март</option> 
</select><br />

<input type="image" style="cursor: hand" onClick="goto()" src="img/button.gif" name="submit">
</form>
 
G

Guest

dex0r

может я что не так делаю, но не работает твой пример.

А вообще мне нужно скрестить твое решение и найденное мной, примерно так:

Код:
<html>
<body bgcolor="#ffffff" onLoad="setMonthData();"> 
<script> 
function goto() {
document.location.href = 'http://www.domain.by/' + document.all.theForm.year.value + '/' + document.all.theForm.month.value + '/';
}

var data=("2003/October,2003/November, 2004/January, 2004/November,2004/December").split(","); 

function setMonthData() 
{ var m = document.theForm.month; 
var y = document.theForm.year.options[document.theForm.year.selectedIndex].text + "/"; 
var k=0; 
for (j=0; j<data.length; j++) 
{ if (data[j].indexOf(y) >= 0) 
  m.options[k++] = new Option(data[j].substring(data[j].indexOf("/")+1)); 
} 
if (k == 0) 
 m.options[k++] = new Option("=== Выберите год ==="); 
for (j=m.options.length-1; j>=k; j--) 
 m.options[j]=null; 
} 

</script> 
<form name=theForm method="POST"> 
Год: 
<br><select name=year onChange="setMonthData();" style="width: 200px;"> 
<option>2003 
<option>2004 
</select> <br>
Месяц: 
<br><select name="month" style="width: 200px;"></select> 
<br><input type="image" style="cursor: hand" onClick="goto()" src="img/button.gif" name="submit">
</form>
</body>
</html>

Но это пока не пашет.


Мне нужно при клике на отправить перейти на www.www.ru/папка/первый селект/второй селект/

Ох...
почему я не программер :)
 
G

Guest

Короче почитал я тут все это....
Все намного проще.....


Код:
<script language="JavaScript" type="text/JavaScript">
function menu(d,s){
if (s==0){confirm("Выберите месяц!!!!")}
if(s!=0){self.location=("http://www.domain.com/"+d+"/"+s+"/")}
//confirm(d);
}
</script>
<form name="form1">
<select id="menu1" onChange="menu(this.value,document.getElementById('menu2').value)">
 <option value="2003" selected>2003</option>
 <option value="2004">2004</option>
</select>
<select id="menu2" onChange="menu(document.getElementById('menu1').value,this.value)">
 <option value="0" selected>Месяц</option>
<option value="01">Январь</option>
<option value="02">Февраль</option>
<option value="03">Март</option>
<option value="04">Апрель</option>
<option value="05">Май</option>
<option value="06">Июнь</option>
<option value="07">Июль</option>
<option value="08">Август</option>
<option value="09">Сентябрь</option>
<option value="10">Октябрь</option>
<option value="11">Ноябрь</option>
<option value="12">Декабрь</option>
</select>

</form>

Кстати работает везде... и в даже в ненавистном мной нескейпе....
Пользуйся на здоровье, ежели чего Q_qwert@mail.ru Михаил....
Ох...
почему я не программер :rolleyes:
Все со временем , со временем , ну и желанием пожалуй.... Я тоже только учусь...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!