2012-08-08 27 views
5

thể trùng lặp:
Clearing <input type='file' /> using jQueryCan không rõ ràng input type = file trong javascript jquery

Đây là mã của tôi:

<input ID="fileUpload1" runat="server" type="file" style="width:275px; position:absolute; left:1px"/> 

Tôi đã thử một số giải pháp :

$("input[type='file']").val(''); 
$('#DivfileUpload').replaceWith("<input class=VWButton ID=fileUpload1 runat=server type=file style=width:275px; position:absolute; left:1px/>"); 

và nhiều trang khác từ web nhưng không thành công.

+0

Có thể trùng lặp: http://stackoverflow.com/q/1043957/663604 –

+0

Tôi sử dụng câu trả lời đó nhưng thực sự không có succced. – anmarti

Trả lời

9

Bạn không thể đặt giá trị của đầu vào tệp vì lý do bảo mật (hiển nhiên).

Nếu bạn muốn xóa nó, bạn cần phải thiết lập lại các hình thức đó là trong.


Thay thế nó bằng một cái mới cũng nên làm việc, nhưng làm điều đó với mã hợp lệ. (có nghĩa là không cố gắng bao gồm mã phía máy chủ chẳng hạn như thuộc tính/giá trị ASP runat=server và làm giá trị thuộc tính trích dẫn không phải là các từ đơn giản (ví dụ: thuộc tính kiểu của bạn)).

+0

vì vậy nếu tôi bọc các loại đầu vào = tập tin với một div và sử dụng tùy chọn thứ hai nên làm việc? – anmarti

+0

Bạn có thể liệt kê/giải thích lý do bảo mật không? – Satish

+0

@Satish - Mọi người giữ thông tin cá nhân trong các tệp trên máy tính của họ. Nếu bất kỳ trang web nào bạn truy cập có thể đọc các tệp đó, nó sẽ không phải là rất riêng tư. – Quentin

-1
$(function() { 
    $('#fileUpload1').val(''); 
}); 
+0

Xin lỗi, nó không. – anmarti

+0

$ (ID).val (''); điều này sẽ hoạt động nếu được áp dụng trong sự kiện hợp lệ của bất kỳ phần tử nào – TheDean

7

Cố gắng đặt giá trị bằng .val ('') sẽ không thành công trong một số trình duyệt (như IE) vì lý do bảo mật.

lựa chọn tốt nhất của bạn là để thiết lập lại các hình thức:

$('form').trigger('reset'); 

Hoặc sử dụng mã thay thế của bạn, với sửa đổi chút ít (đảm bảo HTML hợp lệ):

$('#fileUpload1').replaceWith('<input id="fileUpload1" type="file" style="width:275px; position:absolute; left:1px"/>'); 

Nếu bạn phong cách hộp với CSS, mã của bạn trở nên đơn giản hơn.

CSS:

#fileUpload1 { 
    width: 275px; 
    position: absolute; 
    left: 1px; 
} 

JavaScript:

$('#fileUpload1').replaceWith('<input id="fileUpload1" type="file"/>'); 

Một lựa chọn cao cấp hơn là để ẩn các tập tin hộp tải lên khi trang web được tải, sau đó tạo ra một bản sao của nó được hiển thị cho người dùng. Khi bạn cần xóa nó, bạn xóa bản sao, sau đó sao chép bản gốc ẩn. Phương pháp này cũng cho phép bạn tạo nhiều bản sao của hộp nhập liệu nếu bạn muốn cho phép người dùng tải lên nhiều tệp. Tôi sẽ để lại chi tiết triển khai cho bạn. ;)

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