2012-04-12 37 views
5

Tôi có một ứng dụng html5 sử dụng API tệp, sử dụng phần tử. Tôi có thể trả lời khi người dùng chọn một tệp. Tôi muốn có thể làm điều gì đó nếu người dùng hủy lựa chọn tệp. Tuy nhiên, tôi không thể tìm thấy sự kiện nào được kích hoạt trên phần tử đầu vào nếu người dùng nhấp vào nút hủy thay vì ok trong cuộc đối thoại của trình chọn tệp.Chụp sự kiện hủy trên kiểu đầu vào = tệp

Có một số sự kiện được kích hoạt khi 'hủy' mà tôi bị thiếu hay tôi nên kiến ​​trúc lại ứng dụng của mình để không cần điều này?

Trả lời

0

Không có thực sự là một người biết lắng nghe để kiểm tra nếu một tập tin được lựa chọn, bạn có thể nhận được xung quanh nó bằng cách thiết lập một lưu ý trong mã của bạn bằng cách sử dụng trên sự kiện thay đổi như sau:

var FileChoosen = false; 

var inputElement = document.getElementById("inputField"); 
inputElement.addEventListener("change", handleFiles, false); 
function handleFiles() { 
    var fileList = this.files; /* now you can work with the file list */ 


    //Check if the layout was changed from file API: 
    if(document.getElementById('fileOutput').innerHTML != "") { 
    FileChoosen = true; 
    setTimeout("funcCalledToCheckUserSelection()", 500); 
    }; 


} 
3

Khi người dùng nhấp hủy, thay đổi trình kích hoạt sự kiện một lần nữa. Thats làm việc cho tôi;

 $('#attachedFiles').bind("change", function() { 
      var file = this.files[0]; 
      if (file) { 
       // if file selected, do something 
      } else { 
       // if user clicks 'Cancel', do something 
      } 
     }); 
+5

Trình duyệt nào sẽ hủy sự kiện thay đổi khi hủy đầu vào tệp? Không làm việc cho tôi. –

+0

@ E-D không hoạt động trên Safari quá –

+0

để biết thêm các giải thích: Lệnh này chỉ hoạt động đối với trình duyệt Google Chrome. - ** Và điều này là bình thường ** - Google Chrome đã thông qua chính sách để cho phép người dùng chọn xóa tệp và không chỉ hủy -'browse ... '- Đó là vấn đề ** trình duyệt chính trị ** khác phải hủy nhấp chuột. Hiển thị tên tệp trong loại đầu vào tệp nhất quán tùy thuộc vào trình duyệt. Tại một hủy bỏ google chrome loại bỏ các tập tin và tên tập tin trong tập tin loại đầu vào trong khi những người khác không làm gì cả. Voilà. – maliness

0

Tôi có cùng một câu hỏi, giải pháp là đáng ngạc nhiên rất dễ dàng ... ít nhất là trong trường hợp của tôi NW.js (Node-Webkit) bắn oncancel kiện nếu người dùng nhấp vào nút [hủy] trong file chooser hội thoại. Bạn sử dụng cách đơn giản và bản địa này nếu bạn cũng đang sử dụng NW.js (process.version là v5.11.0).

Tôi cũng đã thử Microsoft HTA trên Windows 10, nó không kích hoạt sự kiện oncancel.

Các vấn đề liên quan