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都收不到,都是空白 后来用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
) 只有原本就写好的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都收不到,都是空白 后来用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
) 只有原本就写好的input才传了过来。
动态生成的input都没有过来
拜托各位了。卡这里好久
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货