2015-08-24 2 views
0


Редактировать ============== ========================
Привет! Большое спасибо всем, кто ответил и пытался мне помочь. Я смог получить то, что мне нужно, используя iframe, как было предложено @Kaiido, так как мой предыдущий код не работает в ie8. Благодаря этому также: JQuery file posting using iframe Опять. Спасибо!

======================================================================================================================= =======================
У меня есть форма для загрузки. Я могу загрузить файл при отправке. Проблема в том, что я пытаюсь добавить/добавить кнопку удаления, когда пользователь выбирает файл для загрузки.

мне нужно, чтобы выглядеть следующим образом:
Here is how I need it to look likeКак добавить кнопку/функцию удаления для загрузки файлов?

Цели:
1. Когда пользователь нажимает на кнопку Delete, список файлов должен вернуться к пустым.
2. Изменение файла должно вести себя как нажатие на кнопку «Удалить».
3. Он должен работать в IE 8. Это отстой.

Форма ввода:

Attachment: <input type="file" name="upload" id="upload"> 
<a href="#" id="btnSubmit">Submit</a> 

JS:

var files; 

$('input[type=file]').on('change', prepareUpload); 

function prepareUpload(event) 
{ 
    files = event.target.files; // I'm not sure but the problem might be on this part. Maybe I could get the opposite of this or negate this? 
} 

function uploadFiles(event) 
{ 
    event.stopPropagation(); 
    event.preventDefault(); 

    var data = new FormData(); 

    $.each(files, function(key, value) 
    { 
     data.append(key, value); 
    }); 

    $.ajax({ 
     url: 'execs/upload.php?files', 
     type: 'POST', 
     data: data, 
     cache: false, 
     dataType: 'json', 
     processData: false, 
     contentType: false, 
     success: function(data) 
     { 
      console.log('Uploaded'); 
     }, 
     error: function() 
     { 
      console.log('Failed'); 
     } 
    }) 
} 

$("#btnSubmit").click(function(e) 
{ 
    uploadFiles(event); 
}) 


Большое вам спасибо за вашу помощь!

+0

Hi @ DJDavid98! Я использовал решение там, однако он очищает поле. Файл не пуст. – Mary

+0

@Mary, решение 'input.value = ''' должно работать, просто не делайте свой файловый список глобальной переменной. Функция prepareUpload не используется, вам просто нужно проверить «файлы» ввода при выполнении загрузки. Или, альтернативно, ваша функция удаления должна просто удалить глобальную переменную 'file' – Kaiido

+0

Привет @Kaiido! Я попробовал присваивать пустое значение. Я проверил значение файлов [0], и он все еще не пуст. благодаря! – Mary

ответ

0

Я сделал скрипку & сейчас работает, проверьте this. Надеюсь это поможет. Я изменил js, как показано ниже (прокомментировано). Кстати, я не вижу кнопку «Удалить».

var files; 
$('#btnSubmit').hide(); // ADDED 

$('input[type=file]').change(function(){ // MODIFIED 
    if(this.value!=''){ 
     prepareUpload(); 
    }else $('#btnSubmit').hide(); 
}); 

function prepareUpload(event) 
{ 
    $('#btnSubmit').show(); 
    files = event.target.files; 
} 

function uploadFiles(event) 
{ 
    event.stopPropagation(); 
    event.preventDefault(); 

    var data = new FormData(); 

    $.each(files, function(key, value) 
    { 
     data.append(key, value); 
    }); 

    $.ajax({ 
     url: 'execs/upload.php?files', 
     type: 'POST', 
     data: data, 
     cache: false, 
     dataType: 'json', 
     processData: false, 
     contentType: false, 
     success: function(data) 
     { 
      console.log('Uploaded'); 
     }, 
     error: function() 
     { 
      console.log('Failed'); 
     } 
    }) 
} 

$("#btnSubmit").click(function(e) 
{ 
    uploadFiles(event); 
}) 
+0

Привет, HeiN! Благодаря! Я это попробую. Кнопка удаления должна отображаться только в том случае, если имеется выбранный файл. Также как кнопка «Отправить». – Mary

+0

@Mary проверить мой ответ. кнопка удаления появляется, когда выбран файл – Alex

+0

Отметьте это как ответ, если он будет работать. @Mary – HeiN

0

Вам необходимо сбросить контроль загрузки, как этот

$(document).ready(function() { 
 
    de(); 
 

 
    $("#fileU").on("change", function() { 
 

 

 

 
    if ($("#fileU").val() != "") { 
 
     $("input[type=button]").attr("style", "display:block"); 
 
    } else { 
 
     de(); 
 
    } 
 
    }); 
 
    $("input[type=button]").click(function() { 
 
    $("#fileU").val(''); 
 
    de(); 
 
    }) 
 

 
}) 
 

 
function de() { 
 
    $("input[type=button]").attr("style", "display:none"); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="file" id="fileU" multiple/> 
 
<input type="button" value="delete FIle" />

При выборе файла, и вы хотите, чтобы удалить его, вам просто нужно назначить '' к вашему значение управления загрузкой.

+0

«Для решения jquery см. ...» Итак, почему ваше решение? Я имею в виду, это не ваниль или – Kaiido

+0

@ Kaiido Изменено. – Alex

+0

все еще не ваниль, так зачем смешивать в первом фрагменте? – Kaiido

Смежные вопросы