07.11.2011, 13:33
|
Новичок на форуме
|
|
Регистрация: 07.07.2008
Сообщений: 9
|
|
Не отправляет данные динамически сгенерированных полей
Всем привет. Такая вещь - под 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, тупо вставил в статическую страницу в то место, где должен быть динамически генерируемый контент - всё прекрасно отсылается.
Получается, проблема в самом этом динамическом контенте. Но почему тогда оно алертом выводит его корректно, но не отсылает?
Буду очень признателен за помощь!
Последний раз редактировалось srgg, 07.11.2011 в 13:37.
Причина: уточнение
|
|
07.11.2011, 13:37
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,205
|
|
А у меня всё нормально передаётся...
|
|
07.11.2011, 13:56
|
Новичок на форуме
|
|
Регистрация: 07.07.2008
Сообщений: 9
|
|
Сообщение от ksa
|
А у меня всё нормально передаётся...
|
Текст скрипта, которым выполняете (а ещё лучше - всей страницы) можете дать?
|
|
07.11.2011, 14:10
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,205
|
|
Таки хотелось бы увидеть твой... Потому как твои огрызко это вообще ни о чём...
|
|
07.11.2011, 14:19
|
Новичок на форуме
|
|
Регистрация: 07.07.2008
Сообщений: 9
|
|
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;
}
}
|
|
07.11.2011, 14:23
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,205
|
|
srgg, ты знаешь что такое "тестовый пример"?
|
|
07.11.2011, 14:27
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,205
|
|
Вот, например мой пример
<!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
|
|
07.11.2011, 14:39
|
Новичок на форуме
|
|
Регистрация: 07.07.2008
Сообщений: 9
|
|
Кажется, догадываюсь
|
|
07.11.2011, 15:05
|
Новичок на форуме
|
|
Регистрация: 07.07.2008
Сообщений: 9
|
|
<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>
|
|
07.11.2011, 15:06
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,205
|
|
srgg, мой пример не нужно собирать по кускам... Он полностью рабочий и запускается даже тут на форуме... А у тебя Лего.
Потрудись хоть немного для решения своей же проблемы...
Так-то лучше...
|
|
|
|