javascript动态生成input,然后提交表单,但是处理页面收不到动态生成的input的值!

时间:2021-12-31 09:13:15
javascript动态生成input,然后提交表单,但是处理页面收不到动态生成的input的值! 
但是可以收到原本就在的静态input的值。 

部分代码 
<form action="shdc_form_creater_script.php" name="newform" method="post" id="shdc_pre_form"> 
<div id="shdc_title_brief">基本区 
<table> 
<tr> 
<td>问卷标题(64字)新问题 </td> 
<td> <input type="text" name="input_form_title" size="64" /> </td> 
<td rowspan="2"> <input type="submit" id="button_submit_form" value="全部设计完毕,提交。"/> 
<input type="hidden" name="input_form_question_num" id="input_form_question_num" value="0" />//这个隐藏的也能收到 
</td> 
</tr> 
.....................略 
</table> 
</div> 
<div id="shdc_preshow_div">预览区 
<ol type="1" id="shdc_preshow"> </ol>//容器,用来存放动态生成的html代码,里面包含input 
</div> 
</form> 



javascript代码。动态生成html代码,里面包含input 
每运行下面一段代码,会产生类似于以下的DOM结构 
红色是动态生成的input,就是这个处理页面收不到

 <li id="question_1"> 
<div id="question_1_title">题目 </div> 
<ol type="A"> 
<li> <input type="radio" name="question_1_selection" id="question_1_selection_1" value="question_1_selection_1"/> <label for="question_1_selection_1">选项1 </label> </li> 
                . 
                . 
                若干 <li> </li> 
                . 
                . 

</ol> 
</li> 


以下为代码 
if(question_type == "single")//question_type与该问题没有关联 

var el_li; 
var el_div; 
var tn_tittle; 
var el_ol; 

el_li =createElement("li"); 
el_li.setAttribute("id",id_li); 

el_div = createElement("div"); 
el_div.setAttribute("id",id_div); 
tn_title = document.createTextNode(question_title); 
el_div.appendChild(tn_title); 

el_ol =createElement("ol"); 
el_ol.setAttribute("type","A"); 

var el_li_sl = new Array(selection_num); 
var el_input_sl = new Array(selection_num); 
var el_label_sl = new Array(selection_num); 
var tn_selection = new Array(selection_num); 
for(i= 1;i <= selection_num;i++) 

el_li_sl[i] = document.createElement("li"); 

el_input_sl[i]= createElement("input",name_selection); 
el_input_sl[i].setAttribute("type","radio"); 
el_input_sl[i].setAttribute("id",selection_id_array[i]); 
el_input_sl[i].value= selection_id_array[i];//创建input的代码段 

el_label_sl[i] = document.createElement("label"); 
el_label_sl[i].setAttribute("for",selection_id_array[i]); 

tn_selection[i] = document.createTextNode(selection[i-1]); 

el_label_sl[i].appendChild(tn_selection[i]); 
el_li_sl[i].appendChild(el_input_sl[i]);//将el_input_sl[i]设定为el_li_sl[i]的字节点 
el_li_sl[i].appendChild(el_label_sl[i]); 

el_ol.appendChild(el_li_sl[i]); 

el_li.appendChild(el_div); 
el_li.appendChild(el_ol); 



var target = document.getElementById("shdc_preshow"); 
target.appendChild(el_li);//最后成为容器的字节点 

其中createElement(type,name)为创建节点元素 
function createElement(type, name) 

  var element = null; 

  try { 
      // First try the IE way; if this fails then use the standard way 
  if(name ) 
    element = document.createElement(' <'+type+' name="'+name+'">'); 
  else if(!name )   
      element = document.createElement(type); 

  } catch (e) { 
      // Probably failed because we’re not running on IE 
  } 
  if (!element) { 
      element = document.createElement(type); 
      element.setAttribute("name",name); 
  alert("firefox"); 
  } 
  return element; 
} //创建元素兼容版(结束) 

接受页面简单得多,用php写的 


<?php 
$input_form_title = $_POST["input_form_title"]; 

$input_form_question_num = $_POST["input_form_question_num"]; 
$p1 = $_POST["question_1_selection"]; 
$p2 = $_POST["question_2_selection"]; 
$p3 = $_POST["question_3_selection"]; 
$p4 = $_POST["question_4_selection"]; 



?> 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title> </title> 
</head> 

<body> 
<?php 
echo "input_form_title = $input_form_title <br /> 

input_form_question_num = $input_form_question_num <br /> 

p1=$p1 <br /> 
p2=$p2 <br /> 
p3=$p3 <br /> 
p4=$p4 <br />"; 

?> 

</body> 
</html> 

input_form_title 和 input_form_question_num 都能收到,并且正确 
p1,p2,p3,p4都收不到,都是空白 

拜托各位了。卡这里好久

6 个解决方案

#1


用print_r($_POST)察看后发现

Array ( [input_form_title] => hjk
 [input_form_question_num] => 1
 [input_form_brief] => jjk 
[input_question_title] => hgjgf
 [input_question_selection] => jkghk 
[input_question_type] => single ) 

只有这些个被传递过来了,他们都是已开始写好在html上的。
而动态生成的那些都没有被传递

#2


你生成的INPUT是不是在FORM中?

#3


谢谢。已经没问题了

#4


请问楼主是怎么解决的啊?
我也遇到这个问题了

#5


请问楼主是怎么解决的啊?
我也遇到这个问题了

#6


郁闷也遇到了这个问题,IE下没问题,FF和Chrome就有问题了。 原因就是没有把input放在form中(我这里是因为我把form标签放在table里面,于是FF和chrome就没有把input放在form中了),解决方法就是把form放在table标签外面就行了。

#1


用print_r($_POST)察看后发现

Array ( [input_form_title] => hjk
 [input_form_question_num] => 1
 [input_form_brief] => jjk 
[input_question_title] => hgjgf
 [input_question_selection] => jkghk 
[input_question_type] => single ) 

只有这些个被传递过来了,他们都是已开始写好在html上的。
而动态生成的那些都没有被传递

#2


你生成的INPUT是不是在FORM中?

#3


谢谢。已经没问题了

#4


请问楼主是怎么解决的啊?
我也遇到这个问题了

#5


请问楼主是怎么解决的啊?
我也遇到这个问题了

#6


郁闷也遇到了这个问题,IE下没问题,FF和Chrome就有问题了。 原因就是没有把input放在form中(我这里是因为我把form标签放在table里面,于是FF和chrome就没有把input放在form中了),解决方法就是把form放在table标签外面就行了。