13
Çok dosyalı bir yükleme oluşturuyorum. Dosya listesini oluşturduğum doğrulama işleminde (gönderilmeden önce), dinamik olarak oluşturulan ilk <form>
, beklendiği gibi işlenecek ve dinamik olarak oluşturulan diğer <form>
'lar olmayacaktır. Bu IE7 + veya FireFox'ta çalışmıyor ... AyrıcajQuery Birden Fazla Dinamik Formdan Birden Fazla Dinamik iFrame'ye
nota, bu kod 2007 durumda herkes işaret edebilir herhangi bir kısıtlama vardır SharePoint var! Teşekkürler!
Kullanım Örneği
- Kullanıcı tıklama göz ve bir dosya seçer ...
<input type="file" />
kontrolü gizlenir.- jQuery,
<form>
'u<input type="file" />
etrafında sarar ve formun yanıt içintarget
olarak başvuruda bulunduğu ve formu gönderdiği yeni bir ekler. - Sunucu tarafında, bazı doğrulama işlemleri yapıyorum ve dosya adını, boyutunu ve kaldırılacak seçeneği geri gönderiyorum.
- (yanıtında) kullanıcı Winter.jpg | 10 KB | (X) kullanıcı daha yüklemek istediği durumunda
<div>
için - jQuery
clone()
'ın<input type="file" class="uploader" />
kontrolü veappend()
' s onu kaldırın. - Not: zihin
clone()
,<form>
tutmak veid
,name
için benzersiz kimlikler verilmiş vetarget
sırasıyla edilir..ashx
dosyası test edildi ve çalışıyor. Ben
HTML
<div id="files">
<div class="field">
<input id="file" type="file" name="file" class="uploader" value="Browse..." />
</div>
</div>
JavaScript ... Ben yeni <form>
s, <input type="file"/>
's ve ' s oluşturma ve listeye eklemeye devam edemez neden karıştı
Maalesef kodu ... bir bitin sloppy-- deneme ve burada hata olabilir
<script type="text/javascript">
$('.uploader').live('change', function(){
var $clone = $(this).parent().clone();
var filename = $(this).val().substring($(this).val().lastIndexOf('\\')+1);
//var $form = $('<form id="uploadForm" action="_layouts/GetFileInfo.ashx" method="post" target="fileinfo" enctype="multipart/form-data">');
var $form = $('<form>').attr('id', 'uploadForm').attr('action', '_layouts/GetFileInfo.ashx').attr('method', 'post').attr('target', 'fileinfo').attr('enctype', 'multipart/form-data');
var $result = $('<iframe name="fileinfo' + _uploadId + '" src="upload.html" frameBorder="0" allowtransparency="true" style="width: 250px; height: 25px; border:0;">');
$form[0].id += _uploadId;
$form[0].target += _uploadId;
$clone.find('input')[0].id += _uploadId;
$clone.find('input')[0].name += _uploadId;
//remove button
$('<div class="remove" style="float:right;">').html("x").appendTo($(this).parent());
//append the goodness
$(this).parent().append($result);
$(this).wrap($form);
//let the form render and submit
window.setTimeout(function(){
$('#files form').last().submit();
}, 1000);
$(this).hide();
$clone.find('input').val('');
$(this).parents('#files').append($clone);
_uploadId++;
});
</script>
Ben klon() yöntemine sadık geçen deneyin ...
Rendered HTML
<div style="float: left;" class="col" id="files">
<div class="field">
<form id="uploadForm0" action="_layouts/GetFileInfo.ashx" method="post" target="fileinfo0" enctype="multipart/form-data">
<input type="file" value="Browse..." class="uploader" name="file" id="file" style="display: none;">
</form>
<div style="float: right;" class="remove">x</div>
<iframe frameborder="0" style="width: 250px; height: 25px; border: 0pt none;" allowtransparency="true" src="upload.html" name="fileinfo0"></iframe>
</div>
<div class="field">
<form id="uploadForm1" action="_layouts/GetFileInfo.ashx" method="post" target="fileinfo1" enctype="multipart/form-data">
<input type="file" value="Browse..." class="uploader" name="file0" id="file0" style="display: none;">
</form>
<div style="float: right;" class="remove">x</div>
<iframe frameborder="0" style="width: 250px; height: 25px; border: 0pt none;" allowtransparency="true" src="upload.html" name="fileinfo1"></iframe>
</div>
<div class="field">
<input type="file" value="Browse..." class="uploader" name="file01" id="file01">
</div>
</div>
Tüm seksi şeytanlar C'm ... Dışarıda olduğunuzu biliyorum, muhtemelen benim gibi akıllara durgunlaşırken, ama JSFiddle elinde, bana bir melodi çalmaya hazır mısınız? :) Merak etme-Bounty Cometh. * BUMP * – pixelbobby
Sorunuzu cevapladım, lütfen şu adresten bir göz atın (http://stackoverflow.com/questions/9277695/insert-data-into-textbox-when-checkbox-is-checked/9277746#9277746) soru, eğer mümkünse lütfen bana bir fikir verin, acil bir çözüme ihtiyacım var – harry
Dosya girişleri ve iframe'lerin etrafında ek güvenlik olduğunu ve kötü niyetli komut dosyalarının izinsizce/kullanıcının bilgisi olmadan bir kullanıcının bilgisayarındaki bir dosyayı okumasını önlemek için biliyorum. Bu tür bir kısıtlamaya karşı koşuyor olabilirsiniz. –