2013-05-30 3 views
0

У меня в коде javascript несколько селекторов. Одним из них является триггером для генерации другой селектор:Динамические селекторы/параметры HTML не отправляются в форме

<form id="reportform" name="reportform" action=""> 
    <table cellpadding="3" cellspacing="16"> 
     <thead> 
      <th class="report" colspan="2">Select Scope</th> 
      <th class="report" colspan="2">Select Date</th> 
      <th class="report" colspan="2">Options</th> 
     </thead> 
     <tbody> 
      <tr> 
      ... 
       <td> 
        Period 
       </td> 
       <td> 
        <select id="period" name="period"> 
         <option selected="selected" value="0">- Select -</option> 
         <option value="1">Day</option> 
         <option value="2">Month</option> 
         <option value="3">Year</option> 
        </select> 
       </td> 
       ... 
      </tr> 
       ... 
      <tr> 
       <td></td> 
       <td></td> 
       <td id="date-label2"></td> 
       <td id="date2"></td> 
       <td></td> 
       <td></td> 
      </tr> 
      <tr> 
       <td></td> 
       <td></td> 
       <td></td> 
       <td></td> 
       <td></td> 
       <td align="right"> 
        <input id="go" class="go" type="submit" value="Report"> 
       </td> 
      </tr> 
     </tbody> 
    </table> 
</form> 

Когда один из вариантов в период выбора выбирается одна функция выполняется:

$('#period').change(function() { 
    switch($('#period').find(":selected").text()){ 
     case 'Day': 
      clearDates(); 

      var label = document.getElementById("date-label"); 
      var txt = document.createTextNode("day"); 
      label.appendChild(txt); 

      var day = document.getElementById("date"); 
      var input = document.createElement("input"); 
      input.className = "day-report"; 
      day.appendChild(input); 
      break; 
     case 'Month': 
      ... 
     case 'Year': 
      ... 
    } 
}); 

Функции, используемые здесь:

function clearDates(){ 
    var date = document.getElementById("date-label"); 
    while (date.hasChildNodes()) { 
     date.removeChild(date.lastChild); 
    } 
    date = document.getElementById("date"); 
    while (date.hasChildNodes()) { 
     date.removeChild(date.lastChild); 
    } 
    date = document.getElementById("date-label2"); 
    while (date.hasChildNodes()) { 
     date.removeChild(date.lastChild); 
    } 
    date = document.getElementById("date2"); 
    while (date.hasChildNodes()) { 
     date.removeChild(date.lastChild); 
    } 
} 

Дело в том, что когда я нажимаю кнопку «Отправить», я не вижу динамических элементов формы, сериализованных, и я полагаю, что их не будет отправлять на сервер.

$(function(){ 
    $("#reportform").submit(function(event){ 
     event.preventDefault(); 
     alert(JSON.stringify($('form').serializeObject())); 
     return false; 
    }); 
}); 

Возможно, форма получает эти динамические поля? Заранее спасибо

ответ

0

Похоже, что для новых созданных входов нет атрибута «имя».

+0

Совершенно верно. Я решил это добавить 'input.name =" day ";'. Спасибо. – Spacemonkey

Смежные вопросы