2012-02-02 6 views
3

JSfiddleは次のとおりです。http://jsfiddle.net/buyC9/128/ファイルアップロードフィールドのみをクリアするには?

クリアするとファイルのアップロードフィールドのみを消去します。

マイHTML:

<h1>Upload image:</h1> 
<input type="file" name="blog[opload]" id="blog_opload" class="imagec"> 
<input type="url" size="50" name="blog[url]" id="blog_url" class="imagec"> 
<div id="preview"> 
</div> 

私のjQuery:あなたのコードで

$('input').change(function() { 
    var el = $(this); 
    if (this.value === "") { 
     $('.imagec').prop('disabled', false); 
     this.disabled = false; 
     $('#preview').hide(); 
    } else { 
     $('.imagec').prop('disabled', true); 
     el.prop('disabled', false); 
     alert(el.val()); 
     if (el.attr('type') == 'url') { 
      $('#preview').show().html('<img src=' + '"' + el.val() + '"' + ' />'); 
     } 
    } 
}); 

function reset_html(id) { 
    $('.' + id).html($('.' + id).html()); 
} 

var imagec_index = 0; 
    $('input[type=file]').each(function() { 
    imagec_index++; 
    $(this).wrap('<div id="imagec_' + imagec_index + '"></div>'); 
    $(this).after('<input type="button" value="Clear" onclick="reset_html(\'imagec_' + imagec_index + '\')" />'); 
}); 
+0

を行うことができますか? – gdoron

+3

なぜ私は? –

+1

「押しのけられた」とはなんですか? – j08691

答えて

6

Quick answer is replace it:

$("#clear").click(function(event){ 
    event.preventDefault(); 
    $("#control").replaceWith("<input type='file' id='control' />"); 
}); 

<input type="file" id="control" /> 
<a href="#" id="clear">Clear</a> 
0

あなたはIDセレクタを使用するためのものではなく、クラスセレクタを使用しています。

$('.' + id).html($('.' + id).html()); 

でなければなりません

$('#' + id).html($('#' + id).html()); 

Updated jsFiddle

6

方法について:

$('input[value="Clear"]').click(function(){ 
    $('#blog_opload').val(''); 
}); 

例:jsFiddle

これを使用すると、onclick="reset_html(\'imagec_' + imagec_index + '\')"も取り除くことができます。

1

あなたは、単にあなたがそのためのプラグインを使用していないのはなぜ

$("#filuploadId")[0].value = ""; 
関連する問題