高分求教如何象163邮件上那样添加附件那样
我想做成一个象163邮件 上添加附件那样, 添加一个附件以后,然后再点击新增附件就出另外一个文本框来添加附件.
而且如何来获得文本框的值呢,请各位高手指点一下
我的文本框已经做好,就是不知道怎么去获得新增文本框的值
<table id="t1" border="1">
</table>
<script language="JavaScript">
function add(){
t1.insertRow().insertCell().innerHTML = '<input type="radio" name="tt"><input><input type="text"
name="tt1"></input>';
}
function del(){
var c = document.getElementsByName('tt');
for(var i=0; i<c.length; i++)
if(c[i].checked)
t1.deleteRow(i);
}
</SCRIPT>
<button onClick="add()">add</button>
<button onClick="del()">del</button>
问题点数:100、回复次数:21Top
1 楼tonyzhangcn(东尼)回复于 2006-10-09 10:19:43 得分 20
新增文本框的值是空的呀。我把你的代码改成下面的代码了,你看看是不是你要的东东
(存成一个.htm文件打开就可以看到效果了。)
<HTML>
<head>
<script language="JavaScript">
function add()
{
var t1 = document.getElementById("t1");
t1.insertRow().insertCell().innerHTML = "<input type=\"radio\" name=\"tt\"><input type=\"text\"
name=\"tt1\"></input>";
}
function del(){
var c = document.getElementsByName('tt');
for(var i=0; i<c.length; i++)
if(c[i].checked)
t1.deleteRow(i);
}
function telllast()
{
var allt11= document.getElementsByName("tt1");
alert(allt11[allt11.length-1].value);
}
</SCRIPT>
</head>
<body>
<table id="t1" border="1">
<tr>
<td>
<input type="radio" name="tt">
<input type="text" name="tt1">
</td>
</tr>
</table>
<button onClick="add();">add</button>
<button onClick="del();">del</button>
<button onClick="telllast();">tell me last row value</button>
</body>
</HTML>Top
2 楼asdex1999()回复于 2006-10-09 10:21:23 得分 0
我的文本框是可以输入东西的
Top
3 楼asdex1999()回复于 2006-10-09 10:31:51 得分 0
tonyzhangcn(东尼)
我去试下你的啊,多谢了Top
4 楼eagleking012((菜鸟也疯狂))回复于 2006-10-09 10:31:58 得分 20
<script language="javascript" type="text/javascript"><!--
function checkForm(form) {
var action;
if (form.fromFile.checked) {
if (isAllFileEmpty(form)) {
alert(RES_ALERT_NO_UPLOAD_FILE);
form.file.focus();
return false;
}
if (!form.unzip.disabled && form.unzip.checked) {
action = "PostUnzip"
} else {
action = "PostFile"
}
form.encoding = "multipart/form-data";
} else if (form.fromURL.checked) {
if (form.url.value == "" || form.url.value == "http://") {
alert(RES_ALERT_NO_UPLOAD_URL);
form.url.focus();
return false;
}
var ln = form.url.value.toLowerCase();
if (!startsWith(ln, "http://") && !startsWith(ln, "ftp://") ) {
alert(RES_ALERT_INVALID_URL);
form.url.focus();
return false;
}
action = "PostUrl";
form.encoding = "application/x-www-form-urlencoded";
}
form.action = action + "";
document.getElementById("btnAdd").disabled = true;
document.getElementById("btnUpload").disabled = true;
if(document.all){
document.getElementById("trLoad").style.display = '';
}
return true;
}
function checkFromFile(form) {
form.fromFile.checked = true;
form.fromURL.checked = false;
changeFromXXX(form);
}
function checkFromURL(form) {
form.fromFile.checked = false;
form.fromURL.checked = true;
changeFromXXX(form);
}
function changeFromXXX(form) {
if (isChecked(form.fromFile)) {
for (var i = 0; i < form.elements.length; i++) {
var e = form.elements[i];
if (e.type == "file") {
e.disabled = false;
}
}
form.url.disabled = true;
changeFile(form);
} else if (isChecked(form.fromURL)) {
for (var i = 0; i < form.elements.length; i++) {
var e = form.elements[i];
if (e.type == "file") {
e.disabled = true;
}
}
form.url.disabled = false;
form.unzip.disabled = true;
form.name.disabled = false;
}
}
function changeFile(form) {
var fn = form.file.value.toLowerCase();
if (isMultiFile(form)) {
form.unzip.disabled = true;
} else if (endsWith(fn, ".zip")
|| endsWith(fn, ".jar") || endsWith(fn, ".war")) {
form.unzip.disabled = false;
} else {
form.unzip.disabled = true;
}
changeUnzip(form);
}
function isMultiFile(form) {
var found = false;
for (var i = 0; i < form.elements.length; i++) {
var e = form.elements[i];
if (e.type == "file") {
if (found) return true; else found = true;
}
}
}
function isAllFileEmpty(form) {
for (var i = 0; i < form.elements.length; i++) {
var e = form.elements[i];
if (e.type == "file" && e.value > "") {
return false;
}
}
return true;
}
function changeUnzip(form) {
form.name.disabled = isChecked(form.unzip);
}
function isChecked(element) {
return !element.disabled && element.checked;
}
function init() {
changeFromXXX(form);
}
//----- Multi Upload Functions -------------------------------------------------
var isIE = (navigator.userAgent.indexOf("MSIE") != -1);
var fileIndex = 0;
function addFile() {
var spanId = "filespan";
var fileId = "uploadfile" + (fileIndex++);
addInputFile(spanId, fileId);
}
function addInputFile(spanId, fileId) {
var span = document.getElementById(spanId);
if (span != null) {
var divObj = document.createElement("div"), fileObj, delObj;
divObj.id = fileId;
if (isIE) {
fileObj = document.createElement("<input type=file onchange=changeFile(form)>");
delObj = document.createElement("<input type=button onclick=delInputFile('" + spanId + "','" + fileId + "')>");
} else {
fileObj = document.createElement("input");
fileObj.type = "file";
fileObj.setAttribute("onchange", "changeFile(form)", 0);
delObj = document.createElement("input");
delObj.type = "button";
delObj.setAttribute("onclick", "delInputFile('" + spanId + "','" + fileId + "')", 0);
}
fileObj.name = fileId;
fileObj.size = "40";
fileObj.className = "input";
delObj.value = RES_BT_DELETE;
divObj.appendChild(fileObj);
divObj.appendChild(document.createTextNode(" "));
divObj.appendChild(delObj);
span.appendChild(divObj);
}
}
function delInputFile(spanId, fileId) {
var span = document.getElementById(spanId);
var divObj = document.getElementById(fileId);
if (span != null && divObj != null) {
span.removeChild(divObj);
}
}
//--></script>
<form method="post" action="addTxt.jsp" id="form" >
<table>
<tr>
<td nowrap id="filespan">
<input name="file" type="text" class="input" size="40" onchange="changeFile(form)">
<input type="button" onclick="addFile()" value="添加" id="btnAdd" />
</td>
</tr>
</table>
</form>
第二页取file的值Top
5 楼kkgogo(kkgogo)回复于 2006-10-09 10:34:37 得分 20
思路变一点点,
form中:input的name设为tt1、tt2等等,再把总数记录并传递,
在你接收表单的Servlet或jsp中:
一个for循环
request.getParameter(tt1之类);
Top
6 楼asdex1999()回复于 2006-10-09 10:38:52 得分 0
我想用数组去传值,然后接收也是用数组,怎么样Top
7 楼kkgogo(kkgogo)回复于 2006-10-09 10:48:09 得分 0
用不着,innerHTML的时候就把tt1、tt2写死不就完了。Top
8 楼asdex1999()回复于 2006-10-09 10:50:04 得分 0
kkgogo(kkgogo) 有没好的方法呢,Top
9 楼yougucao379548695(郑州-小刘)回复于 2006-10-09 13:07:23 得分 0
关注,学习!Top
10 楼kkgogo(kkgogo)回复于 2006-10-09 13:22:38 得分 0
都是动态的生成的,还不是好办法?不容易实现的地方只是在dom和html标签的控制上。Top
11 楼starsoulxp(星魂)回复于 2006-10-09 13:59:14 得分 0
可以考虑用层来控制Top
12 楼asdex1999()回复于 2006-10-09 16:41:42 得分 0
<!-- saved from url=(0022)http://internet.e-mail -->
<form name="Test" action="11.jsp">
<table id="t1" border="1"></table>
<button onClick="add()">add</button>
<button onClick="del()">del</button>
</form>
<script language="JavaScript">
var j=1;
var Temp="1111";
function add()
{
//var m=j-1;
t1.insertRow().insertCell().innerHTML = "<input type=radio name=tt>其始时间:<input type=text name='Begin"+j+"' value='"+Temp+"'>结束时间:<input type=text name='finsh"+j+"' value='finsh"+j+"'>";
Temp=document.getElementsByTagName("input")[j*3-1].getAttribute("value");
document.getElementsByTagName("input")[j*3+1].setAttribute("value",Temp);
//alert(document.getElementsByTagName("input").length);
j++;
}
function del()
{
var c = document.getElementsByName('tt');
for(var i=0; i<c.length; i++)
{
if(c[i].checked)
t1.deleteRow(i);
}
}
</SCRIPT>
我把JS的代码已经写出来,请哪位大哥怎么把我上面js的文本参数获得
是用数组还是什么好呢Top
13 楼emin_lee(emin)回复于 2006-10-09 16:45:49 得分 0
mark!Top
14 楼W_Cracker()回复于 2006-10-09 17:11:50 得分 0
用Javascript做每点一次就加一个File
而且file在一个<form encType=multipart/form-data>的里面
再用FileupLoad组件上传,它只会识别以上的FormTop
15 楼Sunny319(努力学习java中.)回复于 2006-10-09 18:37:20 得分 0
mark'Top
16 楼xiangbo520(充栋汗牛)回复于 2006-10-10 00:17:00 得分 20
建议你去看看关于“潇湘多文件上传组件”的资料Top
17 楼zhudiyouyou(竹笛悠悠)回复于 2006-10-10 10:14:08 得分 0
mark
收藏了Top
18 楼lliushine(小明)回复于 2006-10-10 10:42:48 得分 0
为什么不能用数组呢Top
19 楼cnyxlxw(黑夜给了我黑色的眼睛我用他来寻找光明)回复于 2006-10-10 12:24:56 得分 0
http://jf.jf.cnTop
20 楼hz890()回复于 2006-10-10 13:35:33 得分 20
我是用ASP+JavaScript实现的,JSP我不会
不过思路和客户端的JS你可以参考一下:
addFile.asp
<%Session("uploadinfo")=""%>
<html>
<head>
<SCRIPT>
var d=0,filecnt=0;
function addfile(i)
{
var f = document.createElement("<div id='filewapper_" + i.toString() + "'>");
var newf = document.createElement("<input type='file' name='file_" + i.toString() + "' id=file_'" + i.toString() + "'>");
f.insertAdjacentElement("BeforeEnd",newf);
var newc = document.createElement("<input type='button' name='cnl_" + i.toString() + "' value='取消' onclick='delfile(" + i.toString() + ");'>");
f.insertAdjacentElement("BeforeEnd",newc);
/*不必使用:
var fws = document.getElementById("filewappers");
fws.insertAdjacentElement("BeforeEnd",f);
*/
document.all("filewappers").insertAdjacentElement("beforeEnd",f)
d++;
filecnt++;
document.all("cnt").value=d;
}
function delfile(i)
{
/*不必使用:
var f = document.getElementById("filewapper_" + i.toString());
f.style.display = "none";
*/
//document.all("filewapper_"+ i.toString()).style.display="none" //也可不用
document.all("filewapper_"+ i.toString()).removeNode(true);
filecnt--;
}
function check()
{
if(filecnt>0) //不必读取document.all("filewappers").children.length的值
{
/*sbmt++
if(sbmt>1)
{
alert("不得重复提交数据!")
return false
}
else
{
return true
}*/
fm.sbt.disabled=true
return true
}
else
{
alert("请选择上传文件!");
return false;
}
}
</SCRIPT>
</head>
<body>
<form action="filesave.asp" name="fm" enctype="multipart/form-data" method="post" onsubmit="return check()">
<div id="filewappers">
</div>
<INPUT TYPE="button" VALUE="添加文件" name="btn" onclick="addfile(d);">
<input type="hidden" name="cnt">
<div align=center><input type="submit" name="sbt" value="确定"></div>
</form>
</body>
</html>
filesave.asp
<%
server.ScriptTimeout=3600
on error resume next
%>
<!--#include file="upload_5xsoft.inc"-->
<!--#include file="function.asp"-->
<%
dim upload,cnt
set upload=new upload_5xsoft
cnt=upload.form("cnt")
if cnt<>"" then
cnt=clng(cnt)
if err.number<>0 then
cnt=0
end if
if cnt>0 then
dim path,i,fso,upfile,lmt,filename,filetype,fcnt,fsize,uploadinfo
path="Upload"
set fso=server.CreateObject("Scripting.FileSystemObject")
if not fso.FolderExists then
fso.CreateFolder(server.MapPath(path))
end if
set fso=nothing
fsize=0
fcnt=0
lmt=0
for i=0 to cnt-1
set upfile=upload.file("file_"&i)
fsize=upfile.filesize
if fsize>0 then
lmt=lmt+fsize
fcnt=fcnt+1
end if
if lmt>(15*1024*1024) then
exit for
end if
next
if lmt>(15*1024*1024) then
set upfile=nothing
set upload=nothing
response.Write "<script language='JavaScript'>alert('上传文件不得超过15MB!');history.back();</script>"
response.End
else
if lmt>0 then
redim arr(fcnt-1)
fcnt=0
for i=0 to cnt-1
set upfile=upload.file("file_"&i)
if upfile.filesize>0 then
filename=GetFileName(now(),"_"&(i+1))
filetype=GetFileType(upfile.filename)
upfile.SaveAs server.MapPath(path&"/"&filename&filetype)
arr(fcnt)=upfile.filename
fcnt=fcnt+1
end if
next
if not upfile is nothing then
set upfile=nothing
end if
set upload=nothing
uploadinfo="您成功上传了"&fcnt&"个文件,点击<a href='addFile.asp'>此处</a>可继续上传。<br>"
uploadinfo=uploadinfo&"已上传文件:<br>"
for i=0 to fcnt-1
uploadinfo=uploadinfo&arr(i)&"<br>"
next
erase arr
uploadinfo=uploadinfo&"上传文件总计:"&(lmt/1024)&"KB"
Session("uploadinfo")=uploadinfo
response.Redirect "uploadinfo.asp"
response.End
else
if not upfile is nothing then
set upfile=nothing
end if
set upload=nothing
response.Write "<script language='JavaScript'>alert('您没有上传任何有效文件!');history.back();</script>"
response.End
end if
end if
else
response.Write "<script language='JavaScript'>alert('无效访问!');history.back();</script>"
response.End
end if
else
response.Write "<script language='JavaScript'>alert('无效访问!');history.back();</script>"
response.End
end if
%>
uploadinfo.asp
<%
Response.Write Session("uploadinfo")
Response.End
%>Top
21 楼sugarsupper(智慧之刃)回复于 2006-10-10 15:35:57 得分 0
<div id="files">
<div>
<input type=button onclick="add();" value=Attacthment>
<script>
var html="<input name=title type=file> <input type=button value=Delete onclick=\"remove(this)\">";
function add()
{
var o=document.all["files"];
var div=document.createElement("div");
div.innerHTML=html;
o.appendChild(div);
//alert(o.innerHTML);
}
function remove(obj)
{
obj.parentElement.parentElement.removeChild(obj.parentElement);
}
</script>
Top




