За последние 24 часа нас посетили 16783 программиста и 1644 робота. Сейчас ищут 1174 программиста ...

Глюки при отправке на сервер данных из динамического селекта

Тема в разделе "JavaScript и AJAX", создана пользователем Feanor1982, 22 июл 2008.

  1. Feanor1982

    Feanor1982 Активный пользователь

    С нами с:
    20 июн 2008
    Сообщения:
    41
    Симпатии:
    0
    Господа! Подскажите тупому зелёному валёнку, в чём его ошибка. Мне необходимо задавать на форме дату. Для этого использую поле ввода типа текст для задания года и селекты для задания месяца и числа. Поскольку в нашем календаре в разных месяцах разное число дней, то приходится задавать элементы селекта динамически. Для этого использую следующую JS функцию
    Код (Text):
    1.  
    2. function yearchange(){
    3. var days=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    4. if(setevent.submitted||(setevent.month.value==2)){
    5. if(!isFinite(setevent.year.value)||setevent.year.value<0){alert("Введите правильно год");
    6. return;}else{if(!(document.setevent.year.value%4))days[1]=29;}}
    7. if(setevent.day.length>0)while(setevent.day.length>0)setevent.day.options.remove(setevent.day.length-1);
    8. for(var i=1;i<=days[document.setevent.month.value-1];i++){
    9. var option=document.createElement("OPTION");
    10. option.text=i;
    11. option.value=i;
    12. document.setevent.day.options.add(option);}
    13. if(document.setevent.submitted.value=="true"){
    14.  if((setevent.event_name.value.length==0)||(setevent.country.value.length==0)||(setevent.city.value.length==0))alert("Заполните название события и страну");else document.setevent.submit();}}
    Данная функция формирует динамический селект, а заодно перед сабмитом проверяет, все ли поля заполнены. На клиенте всё выглядит хорошо, в каждом месяце ровно столько дней, сколько нужно. Теперь делаю сабмит, выставив любое значение в селекте day. Так вот, почему-то на сервере $_POST['day'] всегда равен 1, какое бы значение я не выбрал в селекте. Подскажите, что я делаю не так?
     
  2. Cron

    Cron Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    а HTML представление формы можешь выложить?
     
  3. Feanor1982

    Feanor1982 Активный пользователь

    С нами с:
    20 июн 2008
    Сообщения:
    41
    Симпатии:
    0
    Вот моя формочка. Сформирована динамически на эхотаге
    Код (Text):
    1.  
    2. <form method=Post action=/1/admin.php?mode=event&id=2 enctype="multipart/form-data" name="setevent">
    3. <input type="hidden" name="submitted" value=false;>
    4. <table>
    5. <tr>
    6. <td>
    7. Название события
    8. </td>
    9. <td>
    10. <input type="text" name="event_name" value=Матч "Зенит"-"Локомотив">
    11. </td>
    12. </tr>
    13. <tr>
    14. <td>
    15. Страна проведения
    16. </td>
    17. <td>
    18. <input type="text" name="country" value=Россия>
    19. </td>
    20. </tr>
    21. <tr>
    22. <td>
    23. Город проведения
    24. </td>
    25. <td>
    26. <input type="text" name="city" value=Санкт-Петербург>
    27. </td>
    28. </tr>
    29. <tr>
    30. <td>
    31. Изображение
    32. </td>
    33. <td>
    34. <input type="file", name="image">
    35. </td>
    36. </tr>
    37. </table>
    38. Дата проведения
    39. <select name="day" size="1">
    40. <script language="JavaScript">
    41. for(var i=1;i<=31;i++)document.write("<option value="+i+">"+i+"</option>");
    42. </script>
    43. </select>
    44. <select name="month" size="1" onchange="yearchange()">
    45. <option value="1">январь</option>
    46. <option value="2">февраль</option>
    47. <option value="3">март</option>
    48. <option value="4">апрель</option>
    49. <option value="5">май</option>
    50. <option value="6">июнь</option>
    51. <option value="7">июль</option>
    52. <option value="8">август</option>
    53. <option value="9">сентябрь</option>
    54. <option value="10">октябрь</option>
    55. <option value="11">ноябрь</option>
    56. <option value="12">декабрь</option>
    57. </select>
    58. <input type="text" name="year" onchange="yearchange()">года
    59. <br>
    60. Содержание
    61. <br>
    62. <Textarea name="content" rows="40" cols="30">
    63. Премьер лига, 9-й тур
    64. <br>
    65. 23 июля 2008 , Санкт-Петербург , Стадион “'Петровский' БСА”
    66. <br>
    67. 19:00
    68. <br>
    69. ТВ-трансляция: НТВ+ (прямой эфир), Пятый Канал (прямой эфир НА ПЕТЕРБУРГ И ОБЛАСТЬ), Первый Канал (23:00 в записи
    70. </Textarea>
    71. <br>
    72. Тип события <select name="type_event" size="1">
    73.  
    74. <option value=Обувь >Обувь</option><option value=Одежда >Одежда</option><option value=Авто >Авто</option><option value=Спорт SELECTED>Спорт</option><option value=Мото >Мото</option><option value=Здоровье >Здоровье</option><option value=Бизнес >Бизнес</option></select>
    75. <br>
    76. <input type="button" value="Сохранить" onclick="setevent.submitted.value=true;yearchange();">
    77. </form>