Не отправляет данные динамически сгенерированных полей
Всем привет. Такая вещь - под IE всё работает, под FireFox и Chrom - нет, хотя должно ведь - кажется, и заблудиться-то негде!
Вот в чём загвоздка - у меня динамически создаются 2 списка, поле для загрузки файлов и 2 ячейки. Я в тестовом режиме вывожу alert на предмет сгенерированного блока со всеми этими объектами: alert(newBlock.innerHTML); Вот что он мне пишет: <select name="work_type1" id="work_type1"> [...options...] </select> <select name="work_area1" id="work_area1"> [...options...] </select> <select name="work_type2" id="work_type2"> [...options...] </select> <select name="work_area2" id="work_area2"> [...options...] </select> и т.д. ВСЕ браузеры ОДИНАКОВО видят динамически сгенерированный контент. Однако когда я вывожу полученные после submit формы переменные (work_type1, work_area1, work_type2, work_area2), то вижу их только после отправки Эксплорером! 2 других браузера их вообще не видят, т.е., судя по всему, не отсылают. Провёл эксперимент - скопировал этот сгенерированный текст из окна alert'а FiereFox, тупо вставил в статическую страницу в то место, где должен быть динамически генерируемый контент - всё прекрасно отсылается. Получается, проблема в самом этом динамическом контенте. Но почему тогда оно алертом выводит его корректно, но не отсылает? Буду очень признателен за помощь! |
А у меня всё нормально передаётся... :)
|
Цитата:
|
Таки хотелось бы увидеть твой... :lol: Потому как твои огрызко это вообще ни о чём...
|
counter=1; function generateFilesFields() { //количество полей для згрузки var files_count=document.getElementById('files_count').value; //контейнер для генерации полей загрузки var container=document.getElementById('file_uploading'); // var upl; var tblStart="\n<table>\n <tr>\n <td>\n"; var tblNextCell=" </td>\n <td>\n"; var tblNextCell99=' </td>\n <td style="width:99%">\n'; var tblFinish="\n </td>\n </tr>\n</table>"; if (isNaN(files_count)) alert('Указанное вами значение для количества файлов не является числом!'); else { i=0; while (i<files_count) { //строка загрузки файлов //СПИСОК типов работ: upl='<!--СПИСОК ТИПОВ РАБОТ:-->'+tblStart+'<select name="work_type'+counter+'" id="work_type'+counter+'">\n<? //<options> $Worx->buildWorxAreasListOptions(); ?>\n</select>'+tblNextCell; //СПИСОК предметов: upl+=' \n<!--СПИСОК ПРЕДМЕТОВ:-->\n<select style="background-color:#F7f7f7;" name="work_area'+counter+'" id="work_area'+counter+'">\n<? //<options> $Worx->buildWorxTypesListOptions(); ?>\n</select>'+tblNextCell99; //дописываем ячейки для цен: upl+='\n<input name="file_'+counter+'" type="file" style="width:99%">'+tblNextCell; upl+=' \n<input name="wprice_'+counter+'" id="wprice_'+counter+'" type="text" size="3" title="Ваша цена работы" onkeyUp="calculatePrices(this,\'wprice_customer_'+counter+'\');">'+tblNextCell; upl+=' \n<input name="wprice_customer_'+counter+'" id="wprice_customer_'+counter+'" type="text" size="3" title="Цена для заказчика" onkeyUp="calculatePrices(this,\'wprice_'+counter+'\');">'+tblNextCell; //удалить сформиованную строку загрузки: upl+=' \n<a href="#" \nonClick="parentNode.style.display='; upl+="'none';parentNode.parentNode.parentNode.parentNode.parentNode.innerHTML='';return false;"; // удаляем узлы: td/tr/tbody/table/div upl+='" title="Убрать"><img src="<?=$_SESSION['SITE_ROOT']?>images/delete2.gif" align="absmiddle" hspace="4" border="0" /></a>'+tblFinish; //дописываем контент блока загрузки: var newContainer=document.createElement("DIV"); var newDiv=container.appendChild(newContainer); newDiv.innerHTML=upl; i++; counter++; //2 } //тестовый вывод динамического контента: alert('\nДОБАВЛЕННЫЙ КОНТЕНТ:\n'+container.innerHTML); document.getElementById('div_upl_button').style.display='block'; counter1+=i; } } |
srgg, ты знаешь что такое "тестовый пример"? :)
|
Вот, например мой пример
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <!-- <link rel="stylesheet" type="text/css" href="tmp.css" /> --> <style type="text/css"> </style> <script type="text/javascript"> $(document).ready(function(){ $('#add').click(function(){ var val val='<div>' val+='<select name="work_type1">' val+='<option value=""></option>' val+='<option value="1">Item 1</option>' val+='<option value="2">Item 2</option>' val+='<option value="3">Item 3</option>' val+='</select>' val+='</div>' $('#test').append(val) }); }); </script> </head> <body> <form id='frm' method='get'> <div id='test'></div> <input id='add' type='button' value='Add' /> <input type='submit' value='Send' /> </form> </body> </html> Формирует вот такой УРЛ http://<url>?work_type1=1&work_type1=2&work_type1=3 |
Кажется, догадываюсь
|
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title></title> [JS]<script type="text/javascript"> counter=1; //counter1=0; function generateFilesFields() { //количество полей для згрузки var files_count=document.getElementById('files_count').value; //контейнер для генерации полей загрузки var container=document.getElementById('file_uploading'); // var upl; //счётчики списков: //var wacount=0; //var wtcount=0; var tblStart="\n<table>\n <tr>\n <td>\n"; var tblNextCell=" </td>\n <td>\n"; var tblNextCell99=' </td>\n <td style="width:99%">\n'; var tblFinish="\n </td>\n </tr>\n</table>"; if (isNaN(files_count)) alert('Указанное вами значение для количества файлов не является числом!'); else { i=0; while (i<files_count) { //строка загрузки файлов //СПИСОК типов работ: //upl='<!--СФОРМИРОВАТЬ ПЕРВИЧНЫЙ СПИСОК:-->\n'+wlistHTML; upl='<!--СПИСОК ТИПОВ РАБОТ:-->'+tblStart+'<select name="work_type'+counter+'" id="work_type'+counter+'">\n<option value=0 selected>Все предметы</option><option value="АСТРОЛОГИЯ">АСТРОЛОГИЯ</option><option value="Банковское дело">Банковское дело</option><option value="вирусология">вирусология</option><option value="Государственное регулирование, Таможня, Налоги">Государственное регулирование, Таможня, Налоги</option><option value="Другое: гуманитарные науки">Другое: гуманитарные науки</option><option value="Журналистика, PR, Издательское дело">Журналистика, PR, Издательское дело</option><option value="Законодательство и право">Законодательство и право</option><option value="Искусство, Культура">Искусство, Культура</option><option value="Квантовая механика">Квантовая механика</option><option value="Литература, Зарубежная литература">Литература, Зарубежная литература</option><option value="Маркетинг">Маркетинг</option><option value="Математика">Математика</option><option value="Машиностроение">Машиностроение</option><option value="Медицина">Медицина</option><option value="Менеджмент">Менеджмент</option><option value="Охрана правопорядка">Охрана правопорядка</option><option value="Охрана природы, Экология, Природопользование">Охрана природы, Экология, Природопользование</option><option value="Педагогика">Педагогика</option><option value="Пищевые продукты">Пищевые продукты</option><option value="Политология, Геополитика">Политология, Геополитика</option><option value="Предпринимательская деятельность">Предпринимательская деятельность</option><option value="Прикольно новый">Прикольно новый</option><option value="Промышленность и Производство">Промышленность и Производство</option><option value="Психология, Общение, Человек">Психология, Общение, Человек</option><option value="Радиоэлектроника">Радиоэлектроника</option><option value="Религия">Религия</option><option value="Садоводство">Садоводство</option><option value="Сельское хозяйство">Сельское хозяйство</option><option value="Социология">Социология</option><option value="Страноведение">Страноведение</option><option value="Строительная механика">Строительная механика</option><option value="Теоретическая механика">Теоретическая механика</option><option value="Физика">Физика</option><option value="Физкультура и Спорт, Здоровье">Физкультура и Спорт, Здоровье</option><option value="Философия">Философия</option><option value="Химия">Химия</option><option value="Экономика и Финансы">Экономика и Финансы</option><option value="Экономическое право">Экономическое право</option><option value="Экскурсии и туризм">Экскурсии и туризм</option><option value="Электротехника">Электротехника</option><option value="Эндокринология">Эндокринология</option>\n</select>'+tblNextCell; //alert('SEL= '+wlistHTML+'<select name="work_type'>'); //alert(upl); //СПИСОК предметов: upl+=' \n<!--СПИСОК ПРЕДМЕТОВ:-->\n<select style="background-color:#F7f7f7;" name="work_area'+counter+'" id="work_area'+counter+'">\n<option value="0" selected>Все типы работ </option><option value="Диплом MBA">Диплом MBA</option><option value="Дипломная работа">Дипломная работа</option><option value="Диссертация">Диссертация</option><option value="Исследование">Исследование</option><option value="Контрольная работа">Контрольная работа</option><option value="Курсовая">Курсовая</option><option value="Лабораторная работа">Лабораторная работа</option><option value="Неизвестный">Неизвестный</option><option value="Опыт">Опыт</option><option value="Отработка">Отработка</option><option value="Преддипломная практика">Преддипломная практика</option><option value="Производственная практика">Производственная практика</option><option value="Прочее">Прочее</option><option value="Реферат">Реферат</option><option value="мегаЭкспл">мегаЭкспл</option><option value="Прочее">Прочее</option>\n</select>'+tblNextCell99; //дописываем ячейки для цен: upl+='\n<input name="file_'+counter+'" type="file" style="width:99%">'+tblNextCell; upl+=' \n<input name="wprice_'+counter+'" id="wprice_'+counter+'" type="text" size="3" title="Ваша цена работы" onkeyUp="calculatePrices(this,\'wprice_customer_'+counter+'\');">'+tblNextCell; upl+=' \n<input name="wprice_customer_'+counter+'" id="wprice_customer_'+counter+'" type="text" size="3" title="Цена для заказчика" onkeyUp="calculatePrices(this,\'wprice_'+counter+'\');">'+tblNextCell; //удалить сформиованную строку загрузки: upl+=' \n<a href="#" \nonClick="parentNode.style.display='; upl+="'none';parentNode.parentNode.parentNode.parentNode.parentNode.innerHTML='';return false;"; // удаляем узлы: td/tr/tbody/table/div upl+='" title="Убрать"><img src="http://localhost/Referats/images/delete2.gif" align="absmiddle" hspace="4" border="0" /></a>'+tblFinish; //alert(upl); //дописываем контент блока загрузки: //container.insertAdjacentHTML("beforeEnd",upl); // insertAdjacentHTML РАБОТАЕТ ТОЛЬКО ПОД IE!!! var newContainer=document.createElement("DIV"); var newDiv=container.appendChild(newContainer); newDiv.innerHTML=upl; //alert('\nДОБАВЛЕННЫЙ ТЕКСТ:\n'+newDiv.innerHTML); i++; counter++; //2 } alert('\nДОБАВЛЕННЫЙ КОНТЕНТ:\n'+container.innerHTML); document.getElementById('div_upl_button').style.display='block'; counter1+=i; } } //рассчитать цены для заказчика и автора: function calculatePrices(active,impacted) { //average: 25% ($price_ratio=125) //если вводим значения в ячейку для цены автора: if (active.id.indexOf("customer_")==-1) { //400/100*125=500 document.getElementById(impacted).value=active.value/100*125; }else{ //если для цены заказчика: // document.getElementById(impacted).value=active.value/125*100; } } </script>[/JS]</head> <body > <table width="100%" height="100%" align="center" cellpadding="0" cellspacing="0"> <form name="form1" method="post" class="padding0" enctype="multipart/form-data"> <tr height="100%"> <td colspan="2" valign="top" style="border-top:solid 1px #CCC;"><div style="overflow:auto; height:100%;" class="padding8 paddingTop14"> <div id="upload_content" style="display:;"> <ol class="content"> Количество загружаемых файлов: <input name="files_count" type="text" id="files_count" size="1" /> <input onClick="generateFilesFields();" type="button" name="files_array" id="files_array" value=" OK " /> </ol> <hr color="#FFFFFF" /> <div id="file_uploading" class="iborder2 borderColorGray"></div> <div id="div_upl_button" class="paddingTop6 paddingLeft8" style="display:"><input name="upload_all_files" type="submit" value="Загрузить!" onClick="return checkPriceInt('file_uploading','wprice_');"></div> </div> </div> </div></td> </tr> </form> </table> </body> </html> |
srgg, мой пример не нужно собирать по кускам... Он полностью рабочий и запускается даже тут на форуме... А у тебя Лего. :lol:
Потрудись хоть немного для решения своей же проблемы... Так-то лучше... :) |
Часовой пояс GMT +3, время: 06:15. |