最近做的一个小功能,需要清空<input type="file">的值,但上传控件<input type="file">的值不能通过JavaScript来修改。
google找到这样一个解决方法:
在上传控件中插入了值,就只能通过form的reset功能来清空了,但是form里面其他的值也被reset了。
既然可以使用form的reset清空,那就有办法了:新建一个临时form,然后将需要清空的上传控件移入其中,reset之后,再移回原来所在位置,最后删除创建的临时form。js代码:
var Upload = {
clear: function(id){
var up = (typeof id=="string")?document.getElementById(id):id;
if (typeof up != "object") return null;
var tt = document.createElement("span");
tt.id = "__tt__";
up.parentNode.insertBefore(tt,up);
var tf = document.createElement("form");
tf.appendChild(up);
document.getElementsByTagName("body")[0].appendChild(tf);
tf.reset();
tt.parentNode.insertBefore(up,tt);
tt.parentNode.removeChild(tt);
tt = null;
tf.parentNode.removeChild(tf);
},
clearForm: function(){
var inputs,frm;
if (arguments.length == 0)
{
inputs = document.getElementsByTagName("input");
}else{
frm = (typeof arguments[0] == "string")?document.getElementById(arguments[0]):arguments[0];
if (typeof frm != "object") return null;
inputs = frm.getElementsByTagName("input");
}
var fs=[];
for ( var i=0; i<inputs.length; i++ )
{
if (inputs[i].type == "file") fs[fs.length] = inputs[i];
}
var tf = document.createElement("form");
for ( var i=0; i<fs.length; i++ )
{
var tt = document.createElement("span");
tt.id = "__tt__" + i;
fs[i].parentNode.insertBefore(tt, fs[i]);
tf.appendChild(fs[i]);
}
document.getElementsByTagName("body")[0].appendChild(tf);
tf.reset();
for ( var i=0; i<fs.length; i++)
{
var tt = document.getElementById("__tt__" + i);
tt.parentNode.insertBefore(fs[i],tt);
tt.parentNode.removeChild(tt);
}
tf.parentNode.removeChild(tf);
}
}
这个方法使用示例:
<!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>
<title>test</title>
<script type="text/javascript">
<!--引入以上js代码--></script>
</head>
<body>
<form name="testform" method="post">
<input type="file" name="testfile" />
<input type="button" value="clear" onclick="Upload.clear('testfile')" /><br />
<input type="button" value="clearAll" onclick="Upload.clearForm()" /><br />
<input type="submit" value="submit" /><input type="reset" value="reset" />
</form>
</body>
</html>
分享到:
相关推荐
首先,我们来看如何获取`<input type="file">`的值。当用户选择了一个文件后,这个文件的信息会存储在`value`属性中,但这个属性是只读的,无法直接通过`value=""`来清空。下面是一个简单的示例,展示如何获取用户...
### JavaScript获取和清空input type="file"值的知识点 #### 1. 获取input type="file"的值 `<input type="file">`元素允许用户选择一个或多个文件,这些文件的路径将通过其`value`属性返回。然而,需要注意的是,...
在JavaScript中,清除`<input type="file">`控件的值是一个相对复杂的问题,因为浏览器出于安全考虑,不允许直接修改或清空该类型的输入字段。通常,当用户选择了一个文件后,无法通过简单的JavaScript操作来重置这...
在进行Web开发的过程中,经常会遇到需要通过JavaScript清空`<input type="file">`上传控件中的文件选择值的需求。然而,根据HTML标准,`<input type="file">`控件的值是不允许通过JavaScript直接进行修改的。原因...
在JavaScript中,`<input type="file">`控件用于让用户选择本地文件,然后上传到服务器。这个控件有一些特殊性,比如其`value`属性是只读的,这意味着我们不能直接通过设置`value`来清空用户选择的文件。这是因为...
这种方法虽然能有效清空`<input type="file">`的值,但请注意,这样做并不会真正删除用户已选择的文件,只是从视觉上清空了控件。如果需要在用户重新选择文件之前阻止旧文件的上传,你需要在提交表单或发送文件到...
当用户点击按钮触发事件时,可以利用JavaScript删除原有的`<input type="file">`元素,并重新创建一个新的`<input type="file">`元素来替代它,从而达到清空文件选择的效果。 示例代码如下: ```html <span id=...
在HTML中,`<input type="file">`控件用于让用户选择本地文件进行上传,它在网页表单中扮演着重要角色。然而,在某些场景下,我们可能需要取消用户已经选择的文件,例如用户错误地选择了文件或者在上传之前想要重新...
对于给`<input type="file">`元素赋予初始值,一种方法是在页面加载时,通过JavaScript设置其`value`属性。然而,由于安全原因,直接设置`value`属性对`<input type="file">`无效。另一种方法是利用`<iframe>`来预...
代码示例使用了JavaScript来清空一个`file`类型的`<input>`元素的值。方法如下: 1. 通过`document.getElementById("myfile")`获取到`<input>`元素的DOM对象。这里的`myfile`应该是该`<input>`元素的id属性值。 2. ...
在网页开发中,File控件(`<input type="file">`)经常用于用户选择本地文件上传至服务器。然而,由于安全原因,浏览器通常不允许JavaScript直接修改File控件的value属性,以防止恶意脚本篡改用户选定的文件。本文将...
本文将通过示例代码介绍如何使用JavaScript来清空`input`元素中`type`属性值为`file`的值。 首先,要清楚的是,`<input type="file">`元素的值是由浏览器自动管理的。我们不能直接通过JavaScript设置这个值为空字符...
在网页开发中,File输入控件(`<input type="file">`)是用户选择本地文件的一种常见方式。然而,由于浏览器的安全策略,JavaScript通常不能直接访问或修改File控件的选定文件路径,这是为了保护用户的隐私。但在...
- **文件上传**(File input):`<input type="file">`,如`<input type="file" name="pic" />`,允许用户从本地选择一个文件上传。 - **文本区域**(Textarea):`<textarea>`,如`<textarea rows="5" cols="30">...
文件上传功能通过`<input type="file">`控件实现。在用户选择文件并提交后,服务器端需处理文件上传请求,例如: ```vbnet Sub upload(ByVal sender As Object, ByVal e As EventArgs) Dim file As HttpPostedFile...
在这个场景下,我们关注的是`<input type="file">`,它允许用户选择本地文件,特别是用于图片上传。为了提升用户体验,我们可以实现图片上传时的预览功能,让用户在提交之前能够看到所选图片的效果。同时,计算图片...
<td><input type="file"/> </td> ``` - **`type="file"`**:表示这是一个文件上传输入框。 #### 3.10 电话号码输入框 ```html <tr><td>绰룺 <td><input type="tel" pattern="[0-9]{11}"/> </td> ``` - **...
HTML中的`<input type="file">`控件用于在网页上实现文件上传功能。默认情况下,用户可以选择任何类型的文件进行上传。然而,为了提高用户体验和安全性,常常需要限制用户只能选择特定类型的文件,例如Word文档、...