2010-10-20 89 views
0

好吧,所以我有一个脚本,当你点击一个链接它动态地添加一个表单字段是有可能的,所以当它被提交时,它会去“example.com?7”(7由于7档) 我的意思是,如果我点击5次,有5个文件字段和我选择5个文件,我可以让操作链接mysite.php 5使用javascript来改变提交链接

这里是脚本:

<!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=utf-8" /> 
<title>Untitled Document</title> 
<script type="application/javascript"> 

function add(){ 
var field = document.createElement('input'); 
field.setAttribute("type", "file"); 
field.setAttribute("name", "yo"); 
document.getElementById('myform').appendChild(field); 
} 

</script> 
</head> 

<body> 
<form id="myform" name="form1" enctype="multipart/form-data" method="post" action=""> 
    <p>File: 
    <input type="file" name="hello" id="hello" /> 
    </p> 
    <p> 
    <input name="submit" type="submit" value="Submit" /> 
    </p> 
</form> 

<a href="#" onclick="add()">Click Here</a> 
</body> 
</html> 

非常感谢!

回答

0

我会保持简单并跟踪您添加了多少个文件字段。每次添加新文件字段时只更新网址。

var numFileElements = 1; 
function add(){ 
    var field = document.createElement('input'); 
    field.setAttribute("type", "file"); 
    field.setAttribute("name", "yo"); 
    var myForm = document.getElementById('myform'); 
    myForm.appendChild(field); 
    ++numFileElements; 
    myForm.setAttribute('action', '?'+ numFileElements); 
} 
+0

工作就像一个魅力。非常感谢。 – DonJuma 2010-10-20 16:09:01

0

只需在表单中保留一个额外的隐藏字段(称之为“count”),并在该脚本添加其他文件输入时增加其值。

+0

我只是(document.write)还是什么。我对JavaScript很陌生。 – DonJuma 2010-10-20 14:12:38

0

有点像?

function doSubmit() { 
    var myForm = document.getElementById('myForm'); //Get myForm 
    var childNodes = myForm.childNodes; //Count child nodes 
    var fields = 0; 
    for (var node in childNodes) { 
     if (childNodes[node].tagName == 'P') fields++; 
    } 
    myForm.setAttribute('action', 'mysite.php?'+fields); 
} 

它计数直接在myForm下的所有P元素。不完美,但它应该工作!只需添加一个onsubmit='doSubmit();

1

我建议给新增加的领域类=“classX”,当你提交表单算不与指定类的元素与getElementsByClassName方法

我觉得比递增的每个值更简单添加一个字段的时间