Этот код должен работать в IE (даже не тестируйте его в Firefox), но это не так. Я хочу отобразить имя прикрепленного файла. Любая помощь?
<html>
<head>
<title>example</title>
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript">
$(document).ready( function(){
$("#attach").after("<input id='fakeAttach' type='button' value='attach a file' />");
$("#fakeAttach").click(function() {
$("#attach").click();
$("#maxSize").after("<div id='temporary'><span id='attachedFile'></span><input id='remove' type='button' value='remove' /></div>");
$('#attach').change(function(){
$("#fakeAttach").attr("disabled","disabled");
$("#attachedFile").html($(this).val());
});
$("#remove").click(function(e){
e.preventDefault();
$("#attach").replaceWith($("#attach").clone());
$("#fakeAttach").attr("disabled","");
$("#temporary").remove();
});
})
});
</script>
</head>
<body>
<input id="attach" type="file" /><span id="maxSize">(less than 1MB)</span>
</body>
</html>
Ответы:
Это так просто, как написать:
$('input[type=file]').val()
В любом случае, я предлагаю использовать атрибут name или ID для выбора ввода. А с событием это должно выглядеть так:
$('input[type=file]').change(function(e){ $in=$(this); $in.next().html($in.val()); });
источник
Самый простой способ - просто использовать следующую строку
jquery
, используя это, вы не/fakepath
поймете ерунды, вы сразу получите файл, который был загружен:$('input[type=file]')[0].files[0]; // This gets the file $('#idOfFileUpload')[0].files[0]; // This gets the file with the specified id
Некоторые другие полезные команды:
Чтобы получить имя файла:
$('input[type=file]')[0].files[0].name; // This gets the file name
Чтобы получить тип файла:
Если бы я загрузил PNG, он вернул бы
image/png
$("#imgUpload")[0].files[0].type
Чтобы получить размер (в байтах) файла:
$("#imgUpload")[0].files[0].size
Также вам не обязательно использовать эти команды
on('change'
, вы можете получить значения в любое время, например, вы можете загрузить файл, и когда пользователь щелкает мышьюupload
, вы просто используете перечисленные мной команды.источник
$('input[type=file]').change(function(e){ $(this).parents('.parent-selector').find('.element-to-paste-filename').text(e.target.files[0].name); });
Этот код не будет отображаться
C:\fakepath\
перед именем файла в Google Chrome в случае использования.val()
.источник
<input onchange="readURL(this);" type="file" name="userfile" /> <img src="" id="blah"/> <script> function readURL(input) { if (input.files && input.files[0]) { var reader = new FileReader(); reader.onload = function (e) { $('#blah') .attr('src', e.target.result) .width(150).height(200); }; reader.readAsDataURL(input.files[0]); //console.log(reader); //alert(reader.readAsDataURL(input.files[0])); } } </script>
источник
Я использовал следующие, которые работали правильно.
$('#fileAttached').attr('value', $('#attachment').val())
источник
//get file input var $el = $('input[type=file]'); //set the next siblings (the span) text to the input value $el.next().text( $el.val() );
источник
Добавьте скрытую кнопку сброса:
<input id="Reset1" type="reset" value="reset" class="hidden" />
Нажмите кнопку сброса, чтобы очистить ввод.
$("#Reset1").click();
источник
<input onchange="readURL(this);" type="file" name="userfile" /> <img src="" id="viewImage"/> <script> function readURL(fileName) { if (fileName.files && fileName.files[0]) { var reader = new FileReader(); reader.onload = function (e) { $('#viewImage') .attr('src', e.target.result) .width(150).height(200); }; reader.readAsDataURL(fileName.files[0]); } } </script>
источник