Reputation: 2654
I want to make users to upload multiple files in PHP.
HTML:
<input name="file[]" type="file" class="multi_files" style="margin: 0px 0px 15px;" />
<button class="add_more">Add More Files</button>
When user selects a file,I need to show the button Add more file
.Otherwise hide the button.On loading of page I make button with class #add_more
hidden through jquery.Initially when first file is uploaded,add more button get displayed.This works fine.From second case onwards ,I need to show add more
only when the next file is uploaded.Pls help me
$('input:file.multi_files').change(
function(){
$('input:file').removeClass('multi_files');
if ($(this).val()) {
$('.add_more').show();
}
else
{
$('.add_more').hide();
}
}
);
$('.add_more').click(function(e){
e.preventDefault();
//my logic is I will check immediate input file has file or not with this condition.
//But this condition always give me undefined value.
if($(this).closest('input:file').val())
{
$(this).before("<input name='file[]' type='file' class='multi_files'/>");
}
});
I also need to add delete button for each file.
Upvotes: 4
Views: 124
Reputation: 3358
$('.add_more').hide();
$('input:file.multi_files').change(
function(){
$('input:file').removeClass('multi_files');
if ($(this).val()) {
$(this).after("<button class='remove'>X</button><br/>");
$('.add_more').show();
}
else
{
$('.add_more').hide();
}
}
);
$('body').on('click','.remove',function(){
if(document.getElementsByClassName('file').length > 1 ){
$(this).prev('input:file').remove();
$(this).next('br').remove();
$(this).remove();
}
});
$('.add_more').click(function(e){
e.preventDefault();
var filePresent = document.getElementsByClassName('file')[document.getElementsByClassName('file').length-1].files.length;
if(filePresent >0 ){
$(this).before("<input name='file[]' type='file' class='multi_files file'/><button class='remove'>X</button><br/>");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<input name='file[]' type='file' class='multi_files file'/>
<button class="add_more">Add More</button>
Upvotes: 1