ссылка на JS

Тема в разделе "HTML, CSS, XML, JavaScript", создана пользователем Guest_, 15 окт 2004.

Статус темы:
Закрыта.
  1. Guest_

    Guest_ Гость

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

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

    Нужно:

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

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

    dex0r Гость

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

    ява скрипт:
    Код (Text):
    <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">
     
  3. Guest

    Guest Гость

    dex0r

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

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

    Код (Text):
    <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)
     
  4. dex0r

    dex0r Гость

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

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    или так
    Код (Text):
    <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>
     
  6. Guest

    Guest Гость

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

    вот тут и ломаю голову
     
  7. Guest

    Guest Гость

    Серёга

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

    Guest Гость

    форум режет код ;)
     
  9. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    Guest
    где????
     
  10. Guest

    Guest Гость

    Серёга

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

    dex0r Гость

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

    Guest Гость

    dex0r

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

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

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

    dex0r Гость

    Код (Text):
    <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>
     
  14. Guest

    Guest Гость

    dex0r

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

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

    Код (Text):
    <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/папка/первый селект/второй селект/

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

    Guest Гость

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


    Код (Text):
    <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 Михаил....
    Все со временем , со временем , ну и желанием пожалуй.... Я тоже только учусь...
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей