2. django的form如果用后台渲染的话,是在生成form的时候就确定了form里面的字段,哪怕是动态生成,而这里的需求是前台(js)动态修改form里面的字段(增删字段)
目前我的解决方案是 自己写html模板,已经放弃了form表单,然后ajax传入后台,自己解析,保存。
1、先用document.createElement方法创建一个input元素!复制代码 代码如下:
var newInput = document.createElement("input")
2、设定相关属性,如name,type等
复制代码 代码如下:
newInput.type=mytype
newInput.name="input1"
3、用appendChild方法,将元素追加到某个标签内容中!
复制代码 代码如下:
TemO.appendChild(newInput)
Javascrip核心代码:
复制代码 代码如下:
<script language="javascript">
function AddElement(mytype){
var mytype,TemO=document.getElementById("add")
var newInput = document.createElement("input")
newInput.type=mytype
newInput.name="input1"
TemO.appendChild(newInput)
var newline= document.createElement("br")//创建一个BR标签是为能够换行!
TemO.appendChild(newline)
}
</script>
完整代码如下:
<html >
<head>
<title>动态添加表单元素</title>
</head>
<script language="javascript">
function AddElement(mytype){
var mytype,TemO=document.getElementById("add")
var newInput = document.createElement("input")
newInput.type=mytype
newInput.name="input1"
TemO.appendChild(newInput)
var newline= document.createElement("br")
TemO.appendChild(newline)
}
</script>
<body>
<form action="" method="get" name="frm">
<div id="add">
<input type="text" name="textfield">
</div>
</form>
<input name="" type="button" value="新建文本框" onClick="AddElement('text')" />
<input name="" type="button" value="新建复选框" onClick="AddElement('checkbox')" />
<input name="" type="button" value="新建单选框" onClick="AddElement('radio')" />
<input name="" type="button" value="新建文件域" onClick="AddElement('file')" />
<input name="" type="button" value="新建密码框" onClick="AddElement('password')" />
<input name="" type="button" value="新建提交按钮" onClick="AddElement('submit')" />
<input name="" type="button" value="新建恢复按钮" onClick="AddElement('reset')" />
</body>
</html>
首先,你的file控件要放到form表单内,其次,每个file控件的name属性应该不同。下面是我修改后的:
<html>
</head>
<script language="javascript" type="text/ecmascript">
var x=1
//======================
//功能:在表单中input file控件
//参数:parentID---要插入input file控件的父元素ID
// inputID----input file控件的ID
//======================
function createInput(parentID,inputFileID){
var parent=$(parentID)//获取父元素
var div=document.createElement("div")//创建一个div容器用于包含input file
x++
var divName=inputFileID+x//随机div容器的名称
div.id=divName
var aElement=document.createElement("input")//创建input
aElement.name=divName
aElement.type="file"//设置类型为file
var delBtn=document.createElement("input")//再创建一个用于删除input file的Button
delBtn.type="button"
delBtn.value="删除"
delBtn.onclick=function(){ removeInput(parentID,divName)}//为button设置onclick方法
div.appendChild(aElement)//将input file加入div容器
div.appendChild(delBtn)//将删除按钮加入div容器
parent.appendChild(div)//将div容器加入父元素
}
//============================
//功能:删除一个包含input file的div 容器
//参数:parentID---input file控件的父元素ID
// DelDivID----个包含input file的div 容器ID
//============================
function removeInput(parentID,DelDivID){
var parent=$(parentID)
parent.removeChild($(DelDivID))
}
//通过元素ID获取文档中的元素
function $(v){return document.getElementById(v)}
</script>
<body>
<form action="test.php" method="post" enctype="multipart/form-data">
<div align="left" id="div_Pic" style="border:1px solid #CCCCCC">
<input name="PicFile" type="file" id="ShowPicFile">
</div>
<input type="button" onClick="createInput('div_Pic','PicFile')" name="button" id="button" value="+ 继续添加图片">
<input type="submit" value="提交">
</body>
</html>
然后php就可以通过遍历$_FILES来获得每个上传的文件。下面的简单例子只是列出每个文件的原文件名:
<?php
forEach($_FILES as $f){
echo $f["name"]."<br>"
}
?>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)