Я разрабатываю приложение для метро с VS2012 и Javascript
Я хочу reset содержимое ввода моего файла:
<input type="file" id="uploadCaptureInputFile" class="win-content colors" accept="image/*" />
Как мне это сделать?
Я разрабатываю приложение для метро с VS2012 и Javascript
Я хочу reset содержимое ввода моего файла:
<input type="file" id="uploadCaptureInputFile" class="win-content colors" accept="image/*" />
Как мне это сделать?
Решение jQuery, которое @dhaval-marthak опубликовано в комментариях, очевидно работает, но если вы посмотрите на фактический вызов jQuery, довольно легко увидеть, что делает jQuery, просто установив атрибут value
в пустую строку. Таким образом, в "чистом" JavaScript это будет:
document.getElementById("uploadCaptureInputFile").value = "";
Вам нужно обернуть <input type = "file">
в теги <form>
, а затем вы можете ввести reset, сбросив форму:
onClick="this.form.reset()"
Это самое лучшее решение:
input.value = ''
if(!/safari/i.test(navigator.userAgent)){
input.type = ''
input.type = 'file'
}
Из всех ответов здесь это самое быстрое решение. Нет входного клонирования, без формы reset!
Я проверил его во всех браузерах (он даже поддерживает IE8).
Вы можете просто клонировать его и заменять самим собой, при этом все события все еще связаны:
<input type="file" id="control">
и
var input = $("#control");
function something_happens() {
input.replaceWith(input.val('').clone(true));
};
Спасибо: Css-tricks.com
Если у вас есть следующее:
<input type="file" id="fileControl">
то просто выполните:
$("#fileControl").val('');
до reset файлового управления.
Другое решение (без выбора элементов HTML DOM)
Если вы добавили на этот вход прослушиватель событий "change", тогда в javascript-коде вы можете позвонить (для некоторых определенных условий):
event.target.value = '';
Например, в HTML:
<input type="file" onChange="onChangeFunction(event)">
И в javascript:
onChangeFunction(event) {
let fileList = event.target.files;
let file = fileList[0];
let extension = file.name.match(/(?<=\.)\w+$/g)[0].toLowerCase(); // assuming that this file has any extension
if (extension === 'jpg') {
alert('Good file extension!');
}
else {
event.target.value = '';
alert('Wrong file extension! File input is cleared.');
}
Следующий код работал для меня с jQuery. Он работает в каждом браузере и позволяет сохранять события и настраиваемые свойства.
var $el = $('#uploadCaptureInputFile');
$el.wrap('<form>').closest('form').get(0).reset();
$el.unwrap();
См. Этот jsFiddle для кода и демонстрации.
Дополнительные сведения см. В разделе Как сбросить ввод файлов с помощью JavaScript.
Сброс кнопки загрузки файла настолько прост, используя чистый JavaScript !
Существует несколько способов сделать это, но простой способ, который хорошо работает во многих браузерах, заключается в изменении поданного значения на ничего, так что загрузка загружается сбрасывается, а также пытается использовать чистый javascript, а не любую фреймворк, я создал код ниже, просто проверьте его (ES6):
function resetFile() {
const file = document.querySelector('.file');
file.value = '';
}
<input type="file" class="file" />
<button onclick="resetFile()">Reset file</button>
Я использую для vuejs
<input
type="file"
ref="fileref"
@change="onChange"/>
this.$refs.fileref.value = ''
Особенно для angular
document.getElementById('uploadFile').value = "";
Будет работать, но если вы используете Angular В нем будет сказано, что "значение свойства" не существует для типа "HTMLElement'.any".
document.getElementById() возвращает тип HTMLElement, который не содержит свойства value. Итак, приведите его в HTMLInputElement
(<HTMLInputElement>document.getElementById('uploadFile')).value = "";
ДОПОЛНИТЕЛЬНО: -
Тем не менее, мы не должны использовать DOM document.xyz() в angular.
Для этого в angular предусмотрены @VIewChild, @ViewChildren и т.д., Которые являются document.querySelector(), document.queryselectorAll() соответственно.
Даже я не читал это. Лучше следить за блогами экспертов
Входной файл реселлера находится на очень одиночном
$('input[type=file]').val(null);
Если вы связываете reset файл в другом поле формы или загружаете форму с помощью ajax.
Этот пример применим
селектор, например, $('input[type=text]')
или любой элемент формы
событие click
, change
или любое событие
$('body').delegate('event', 'selector', function(){
$('input[type=file]').val(null) ;
});
С IE 10 Я решил проблему с помощью
var file = document.getElementById("file-input");
file.removeAttribute('value');
file.parentNode.replaceChild(file.cloneNode(true),file);
где:
<input accept="image/*" onchange="angular.element(this).scope().uploadFile(this)" id="file-input" type="file"/>
document.getElementById("uploadCaptureInputFile").value = "";
Просто используйте:
$('input[type=file]').val('');
С угловым вы можете создать переменную шаблона и установить значение null
<input type="file" #fileUploader />
<button (click)="fileUploader.value = null">Reset from UI</button>
Или вы можете создать способ сброса, подобный этому
component.ts
@ViewChild('fileUploader') fileUploader:ElementRef;
resetFileUploader() {
this.fileUploader.nativeElement.value = null;
}
шаблон
<input type="file"/>
<button (click)="resetFileUploader()">Reset from Component</button>
Вы не можете reset, так как это файл только для чтения. вы можете клонировать его, чтобы решить проблему.
Вы должны попробовать следующее:
$("#uploadCaptureInputFile").val('');
Это можно сделать так
var inputfile= $('#uploadCaptureInputFile')
$('#reset').on('click',function(){
inputfile.replaceWith(inputfile.val('').clone(true));
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="file" id="uploadCaptureInputFile" class="win-content colors" accept="image/*" />
<a href="" id="reset">Reset</a>
Есть много подходов, и я предлагаю пойти с приложением ссылки на вход.
<input
id="image"
type="file"
required
ref={ref => this.fileInput = ref}
multiple
onChange={this.onFileChangeHandler}
/>
очистить значение после отправки.
this.fileInput.value = "";
Решение jQuery:
$('input').on('change',function(){
$(this).get(0).value = '';
$(this).get(0).type = '';
$(this).get(0).type = 'file';
});
Я столкнулся с проблемой загрузки ng2 файлов для углового. если вы ищете решение в угловом порядке, см. ниже код
HTML:
<input type="file" name="myfile"
#activeFrameinputFile ng2FileSelect [uploader]="frameUploader" (change)="frameUploader.uploadAll()"/>
составная часть
import { Component, OnInit, ElementRef, ViewChild } from '@angular/core';
@ViewChild('
activeFrameinputFile ')
InputFrameVariable : ElementRef;
this.frameUploader.onSuccessItem = (item, response, status, headers) => {
'this.'**InputFrameVariable**'.nativeElement.value = '';'
};
Если у вас есть несколько файлов в вашей форме, но только один из них будет reset:
если вы используете boostrap, jquery, filestyle для отображения формы входного файла:
$("#"+idInput).filestyle('clear');
var fileInput = $('#uploadCaptureInputFile');
fileInput.replaceWith(fileInput.val('').clone(true));
Работает и для динамических элементов управления.
Javascript
<input type="file" onchange="FileValidate(this)" />
function FileValidate(object) {
if ((object.files[0].size / 1024 / 1024) > 1) { //greater than 1 MB
$(object).val('');
}
}
JQuery
<input type="file" class="UpoloadFileSize">
$(document).ready(function () {
$('.UpoloadFileSize').bind('change', function () {
if ((this.files[0].size / 1024000) > 1.5) { //greater than 1.5 MB
$(this).val('');
alert('Size exceeded !!');
}
});
});
function resetImageField() {
var $el = $('#uploadCaptureInputFile');
$el.wrap('<form>').closest('form').get(0).reset();
$el.unwrap();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="file" id="uploadCaptureInputFile" class="win-content colors" accept="image/*" />
<button onclick="resetImageField()">Reset field</button>
Чтобы очистить входной файл, выполните следующие действия:
$('#uploadCaptureInputFile').val('');
Вы должны reset форму, содержащую элемент ввода файла
$('#formId').get(0).reset();
это будет reset все элементы внутри формы