2015-08-28 2 views
1

Как вы знаете, я могу нажать кнопку FileUpload, чтобы открыть диалоговое окно «Открыть файл», но я ничего не могу выбрать и просто закрыть или отменить. Мне нужно найти это событие и сделать что-то с этим. Например, если FileUpload запущен, и пользователь не выбирает какой-либо файл, я скрываю кнопку.Проверьте, не сделал ли файл FileUpload ничего на стороне клиента

Вот функция, которая будет вызываться, когда вы выберете кнопку входного файла, и она сделает невидимую кнопку, если вы отменили выбор файла.

 function CancelCheck(element) { 
     var file = elemeny.files[0]; 
     if (file == undefined) 
      document.getElementbyId("Btn1").style.visibility = 'hidden'; 
     } 

И вот мой контроль входного файла:

<input id="Upload1" type="file" name="file" onchange="javascript:CancelCheck(this)" runat="server" accept=".txt" /> 

Это будет работать, если вы ранее выбрали файл (я имею в виду входной файл содержит файл), но если вы нажав на междунар для в первый раз и отменив его, он не будет работать.

Надеюсь, что я достаточно ясен.

+0

пожалуйста, напишите некоторые из ваших HTML код где элемент управления файловой системой, поэтому мы можем сделать предложение. – celerno

+0

@celerno Спасибо, я разместил некоторые коды html и javascript. – Nofuzy

ответ

1

Нет такого мероприятия, но есть грязный решение. Однако я бы не рекомендовал его, если это действительно необходимо.

Итак, мы должны рассмотреть, что происходит, когда нажата кнопка «Отмена» - ориентированы браузер и документ HTML. Для обработки «события отмены диалога» мы можем присоединить обработчик события для события onfocus на теле HTML (например). Как только этот обработчик достигнут, мы должны удалить его, а затем мы можем проверить, пусто ли значение загрузчика файла.

Ниже приведен пример пример:

HTML

<input type="file" id="fileUpload" /> 

JavaScript

var fileUpload = document.getElementById('fileUpload') 

fileUpload.addEventListener('click', onUploadClick); 

function onUploadClick() { 
    document.body.addEventListener('focus', onBodyFocus, true); 
} 

function onBodyFocus() { 
    setTimeout(function() { 
     if(!fileUpload.value || !fileUpload.value.length) 
     { 
      alert('cancelled'); 
     } 
    }, 100); 

    document.body.removeEventListener('focus', onBodyFocus); 
} 

Click for JsFiddle demo

+0

Спасибо, но у меня есть более 10 кнопок загрузки, как я могу их обработать? – Nofuzy

+1

Вы должны использовать некоторый класс для кнопок загрузки и временную переменную для сохранения выбранной кнопки загрузки - [Демонстрация] (https://jsfiddle.net/6Lqrzna2/1/) –

+0

Есть ли способ проверить, нажал ли пользователь на загрузку кнопка? – Nofuzy

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