|
|
|
รบกวนเซียนJavascript ครับ ทำPreview รูป ก่อนuploadหลายไฟล์ แล้วมันไม่เรียง |
|
|
|
|
|
|
|
เรียนเซียน Javascript รบกวนดูโค้ดให้ทีครับว่าพลาดตรงไหน ใน่ส่วนของfunction handleFileSelect
พอเลือกหลายๆไฟล์แล้ว ดันไม่เรียงรูปpreviewให้ (แต่ถึงแม้มันจะเรียงรูปไม่ถูกตอนpreview มันกลับเรียงถูกตอน uploadเข้าfolder กับdatabase แต่ยังไงก็อยากให้เรียงรูปตอน preview ให้ถูกอยู่ดีครับ)
Code
<!doctype html>
<html>
<head>
<title>Proper Title</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<style>
#selectedFiles img {
max-width: 200px;
max-height: 200px;
float: left;
margin-bottom:10px;
}
.delete_img{
cursor:pointer;
color:red;
font-size:14px;
margin-left:10px;
}
</style>
</head>
<body>
<form id="myForm" method="post">
Username: <input type="text" name="username" id="username"><br/>
Email: <input type="text" name="email" id="email"><br/>
Multiple Files: <input type="file" id="files" name="files[]" multiple><br/>
<div id="selectedFiles"></div>
<input type="submit">
</form>
<script>
var selDiv = "";
var storedFiles = [];
$(document).ready(function() {
$("#files").on("change", handleFileSelect);
selDiv = $("#selectedFiles");
$("#myForm").on("submit", handleForm);
$("body").on("click", ".delete_img", removeFile);
});
function handleFileSelect(e) {
var files = e.target.files;
var filesArr = Array.prototype.slice.call(files);
filesArr.forEach(function(f) {
if(!f.type.match("image.*")) {
return;
}
storedFiles.push(f);
var reader = new FileReader();
reader.onload = function (e) {
var html = "<div><img src="" e.target.result "" data-file='" f.name "' class='selFile' title='Click to remove'> <span class='delete_img'> DEL </span><br>" f.name "<br clear="left"/></div>";
selDiv.append(html);
}
reader.readAsDataURL(f);
});
}
function handleForm(e) {
e.preventDefault();
var username = document.getElementById('username').value; //get value จาก form input
var email = document.getElementById('email').value;
var data = new FormData();
data.append('username', username); //มาใส่ในajax object formdata เพื่อเตรียมส่งเข้าฝั่งserver
data.append('email', email);
for(var i=0, len=storedFiles.length; i<len; i ) {
data.append('files[]', storedFiles[i]); //อย่าลืม []
}
var xhr = new XMLHttpRequest();
xhr.open('POST', 'upload.php', true);
xhr.onload = function(e) {
if(this.status == 200) {
console.log(e.currentTarget.responseText);
//alert(e.currentTarget.responseText ' items uploaded.');
window.location = "http://www.google.com";
}
}
xhr.send(data);
}
function removeFile(e) {
var img = e.target.parentElement.querySelector("img")
var file = img.getAttribute('data-file');
for(var i=0;i<storedFiles.length;i ) {
if(storedFiles[i].name === file) {
storedFiles.splice(i,1);
break;
}
}
$(this).parent().remove();
}
</script>
</body>
</html>
Tag : HTML/CSS, JavaScript
|
|
|
|
|
|
Date :
2017-01-08 15:37:28 |
By :
BHunter |
View :
1320 |
Reply :
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
น่าจะเป็นที่การ Post ไปยัง Ajax แล้วตัวไหนเสร็จก่อน มันก็ ส่งค่าตัวนั้นกลับครับ
|
|
|
|
|
Date :
2017-01-09 11:40:18 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|