但是可以收到原本就在的静态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上的。
而动态生成的那些都没有被传递
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上的。
而动态生成的那些都没有被传递
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标签外面就行了。