2011-01-10 28 views
6

Điều này rất lạ. Tôi có một hình thức đơn giản. Tôi có phần tử nhập tệp bên ngoài biểu mẫu này.Không thể sao chép phần tử nhập tệp trong Safari và Chrome. FF và Opera là OK

Người dùng nhấp vào phần tử nhập tệp và chọn tệp. Tôi sao chép các tập tin đầu vào sử dụng mã này:

$('input[name="song[attachment]"]').clone(true).appendTo('form') 

Trong tất cả các trình duyệt: FF, Opera, Safari, Chrome, khi tôi kiểm tra các yếu tố hình thức, tôi thấy các yếu tố đầu vào tập tin nhân bản bên trong biểu mẫu. Tuy nhiên, khi tôi gửi biểu mẫu trong FF và Opera nó hoạt động. Safari và Chrome gửi biểu mẫu có đầu vào tệp trống.

Tôi nhận thấy khi phần tử đầu vào tệp được nhân bản và nối vào phần tử biểu mẫu, nó không sao chép qua các giá trị của nó. Nó chỉ nhân bản một phần tử tệp đầu vào trống. Điều này có bình thường không?

Có vấn đề gì với mã Jquery của tôi không? Hay đây là vấn đề bảo mật và đó là lý do tại sao Safari và Chrome không cho phép tôi thực hiện việc này? Nếu sau này, tại sao FF và Opera lại làm việc khác?

Trả lời

1

Bạn không thể cung cấp giá trị mặc định cho đầu vào tệp hoặc thậm chí chỉnh sửa giá trị đó theo js. Giá trị mặc định của nó luôn trống. Đây là vấn đề bảo mật khi ai đó có thể ẩn đầu vào tệp (ví dụ: display:none) và tải lên dữ liệu nhạy cảm từ máy tính của khách hàng mà bạn không biết.

Đối với phần thứ hai của câu hỏi của bạn, tôi không hoàn toàn chắc chắn về vấn đề này nhưng chỉ là một ý tưởng. Bạn có một id trên đầu vào của bạn? Nếu vậy, bạn nên tính đến điều đó phải là duy nhất trong DOM.

+2

Thay vì nhân bản, thay vào đó tôi đã di chuyển phần tử nhập tệp. Dường như sao chép các giá trị –

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