gpt4 book ai didi

javascript - 如何检查我上传的输入文件的重复项?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:42:50 30 4
gpt4 key购买 nike

我有这个表单,其中有一个文件上传按钮。当您选择一个文件时,它会显示在 upload_prev div 中。我的问题是,当我尝试选择同一个文件时,没有任何反应。我想要运行验证或某种非重复功能。我做到了。我尝试了很多事情和方法,比如使用子节点并查看内部文本是否相同。我试图循环使用 jquery each 并获取值,但它们都失败了。我想再次选择时显示此文件已在 upload_prev 的框中。

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<script type="text/javascript" src="https://code.jquery.com/jquery-1.10.1.js"></script>

<link rel="stylesheet" type="text/css" href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css">

<link rel="stylesheet" type="text/css" href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css">

<style type="text/css">
.fileUpload {
position: relative;
overflow: hidden;
margin: 10px;
}

.fileUpload input.upload {
position: absolute;
top: 0;
right: 0;
margin: 0;
padding: 0;
font-size: 20px;
cursor: pointer;
opacity: 0;
background-color: #fff;
filter: alpha(opacity=0);
}

.buttonwrap {
text-align: center;
padding-top: 20px;
float: left;
display: block;
}

.buttonsend:hover {
background-color: rgba(255, 255, 255, 0.2);
color: #225C51;
}

.buttonsend {
text-decoration: none;
color: #fff;
font-size: 18px;
padding-top: 5px;
padding-bottom: 5px;
padding-left: 10px;
padding-right: 10px;
background-color: rgba(72, 133, 130, .5);
}

span {
float: left;
display: flex;
width: 100%;
}

p.closed {
margin: 0 0 0 7px;
cursor: pointer;
}

</style>

<title></title>

<script type='text/javascript'>//<![CDATA[

$(window).load(function(){
// TO CLOSE THE SLECTED FILE
$(document).on('click', '.close', function() {
$(this).parents('span').remove();
})

//JUST TO PUT A VALUE IN THE BOX WHICH HAS
document.getElementById("uploadBtn").onchange = function() {
document.getElementById("uploadFile").value = this.value;
};

document.getElementById('uploadBtn').onchange = uploadOnChange;
//document.getElementById('uploadBtn').onchange = myFunction;


function uploadOnChange() {

var filename = this.value;
var lastIndex = filename.lastIndexOf("\\");
if (lastIndex >= 0) {
filename = filename.substring(lastIndex + 1);
}


// alert (filename);

var files = $('#uploadBtn')[0].files;

for (var i = 0; i < files.length; i++) {
$("#upload_prev").append('<span>' + '<div class="hesh">' + files[i].name +'</div>' + '<p class="close">X</p></span>');
}
document.getElementById('filename').value = filename;

document.getElementById("demo").innerHTML = files.length;

}


});//]]>

</script>


</head>

<body>
<FORM METHOD="post" ACTION="" ENCTYPE="multipart/form-data">
<!-- <input id="uploadFile" placeholder="Add files from My Computer" class="steptextboxq3" />-->
<div class="fileUpload btn btn-primary">
<span>Browse</span>
<input id="uploadBtn" type="file" class="upload" multiple="multiple" name="browsefile" />
</div>
<input id="filename" type="text" />

<div id="upload_prev"></div>


<div style="clear:both;"></div>
<div class="buttonwrap">
<a href="contactus.html" class="buttonsend" style="float:right;">Send </a> </div>
</FORM>

<p id="demo"></p>

</body>

</html>

这是我的 fiddle 。我怎样才能找到一种方法来做到这一点。

https://jsfiddle.net/Lc5gb7c9/

最佳答案

你可以创建一个数组来存储files[i].name , 使用 Array.prototype.indexOf()检查文件名是否已添加到数组中,如果 true调用alert() , 否则将文件名添加到数组。您可以将数组重置为 []在过程中的任何时候。

请注意,<div><p>元素不是 <span> 的有效内容元素

// outside of `onchange`
var arr = [];

for (var i = 0; i < files.length; i++) {
if (arr.indexOf(files[i].name) === -1) {
arr.push(files[i].name)
$("#upload_prev").append('<div>'
+ '<div class="hesh">'
+ files[i].name + '</div>'
+ '<p class="close">X</p></div>');
} else {
alert(files[i].name + " already selected")
}
}

jsfiddle https://jsfiddle.net/Lc5gb7c9/2/

关于javascript - 如何检查我上传的输入文件的重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37903708/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com