<input type="file" value="Browse" name="avatar" id="id_avatar" />
Я намагався змінити value
, але це не працює. Як налаштувати текст кнопки?
<input type="file" value="Browse" name="avatar" id="id_avatar" />
Я намагався змінити value
, але це не працює. Як налаштувати текст кнопки?
Відповіді:
Використовуйте Bootstrap FileStyle , який використовується для стилювання файлових полів форм. Це плагін для бібліотеки компонентів на основі jQuery під назвою Twitter Bootstrap
Використання зразка:
Включати:
<script type="text/javascript" src="js/bootstrap-filestyle.min.js"> </script>
Через JavaScript:
$(":file").filestyle();
Через атрибути даних:
<input type="file" class="filestyle" data-classButton="btn btn-primary" data-input="false" data-classIcon="icon-plus" data-buttonText="Your label here.">
Ви можете замість цього поставити зображення та зробити це так:
HTML:
<img src="/images/uploadButton.png" id="upfile1" style="cursor:pointer" />
<input type="file" id="file1" name="file1" style="display:none" />
JQuery:
$("#upfile1").click(function () {
$("#file1").trigger('click');
});
CAVEAT : У IE9 та IE10, якщо ви запускаєте onClick у введенні файлу через javascript, форма буде позначена як "небезпечна" і не може бути представлена за допомогою javascript, не впевнений, чи можна її подавати традиційно.
<input type="file"
внутрішню рядок gridp asp.net, рядки якої можна динамічно додавати .. тож буде справжньою болем в голові викликати відповідний тригер клацання входу (того ж ряду) під час натискання на зображення! : /
Сховати введення файлу. Створіть новий вхід для захоплення події клацання та перешліть його на прихований вхід:
<input type="button" id="loadFileXml" value="loadXml" onclick="document.getElementById('file').click();" />
<input type="file" style="display:none;" id="file" name="file"/>
;
кінець.
Текст "Завантажити файл ..." заздалегідь визначений браузером, і його неможливо змінити. Єдиний спосіб подолати це - використовувати компонент завантаження на основі Flash або Java swfupload .
Працює ідеально у всіх браузерах, сподіваюся, що він також працюватиме і для вас.
HTML:
<input type="file" class="custom-file-input">
CSS:
.custom-file-input::-webkit-file-upload-button {
visibility: hidden;
}
.custom-file-input::before {
content: 'Select some files';
display: inline-block;
background: -webkit-linear-gradient(top, #f9f9f9, #e3e3e3);
border: 1px solid #999;
border-radius: 3px;
padding: 5px 8px;
outline: none;
white-space: nowrap;
-webkit-user-select: none;
cursor: pointer;
text-shadow: 1px 1px #fff;
font-weight: 700;
font-size: 10pt;
}
.custom-file-input:hover::before {
border-color: black;
}
.custom-file-input:active::before {
background: -webkit-linear-gradient(top, #e3e3e3, #f9f9f9);
}
Змініть content: 'Select some files';
текст, який ви хочете всередині''
ЯКЩО НЕ ПРАЦЮЙТЕ з firefox, використовуйте це замість введення:
<label class="custom-file-input" for="Upload" >
</label>
<input id="Upload" type="file" multiple="multiple" name="_photos" accept="image/*" style="visibility: hidden">
<input id="uploadFile" placeholder="Choose File" disabled="disabled" />
<div class="fileUpload btn btn-primary">
<span>Your name</span>
<input id="uploadBtn" type="file" class="upload" />
</div>
JS
document.getElementById("uploadBtn").onchange = function () {
document.getElementById("uploadFile").value = this.value;
};
докладніше http://geniuscarrier.com/how-to-style-a-html-file-upload-button-in-pure-css/
Просто
<label class="btn btn-primary">
<i class="fa fa-image"></i> Your text here<input type="file" style="display: none;" name="image">
</label>
[Редагувати за допомогою фрагмента]
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<label class="btn btn-primary">
<i class="fa fa-image"></i> Your text here<input type="file" style="display: none;" name="image">
</label>
EDIT : Я бачу зараз за коментарями, які ви запитуєте про текст кнопки, а не шлях до файлу. Моє ліжко. Я залишу свою оригінальну відповідь нижче, якщо хтось, хто наткнеться на це питання, трактує її так, як я це робив спочатку.
2-е редагування : Я видалив цю відповідь, тому що вирішив, що я неправильно зрозумів питання, і моя відповідь не була актуальною. Однак коментарі в іншій відповіді вказували на те, що люди все-таки хочуть бачити цю відповідь, тому я її визнаю.
МОЙ ОРИГІНАЛЬНИЙ ВІДПОВІДЬ (я думав, що ОП питає про шлях, а не про текст кнопки):
Ця функція не підтримується з міркувань безпеки . Веб-браузер Opera використовувався для підтримки, але його було видалено. Подумайте, що було б можливо, якби це було підтримано; Ви можете зробити сторінку зі входом для завантаження файлу, попередньо заповнити її шляхом до якогось чутливого файлу, а потім автоматично надіслати форму за допомогою javascript, що викликається onload
подією. Це станеться занадто швидко, щоб користувач нічого з цього не зробив.
<label>
для підпису<form enctype='multipart/form-data' action='/uploads.php' method=post>
<label for=b1>
<u>Your</u> caption here
<input style='width:0px' type=file name=upfile id=b1
onchange='optionalExtraProcessing(b1.files[0])'
accept='image/png'>
</label>
</form>
Це працює без JavaScript . Ви можете прикрасити етикетку будь-якої міри складності, до змісту вашого серця. Після натискання на мітку натискання автоматично перенаправляється на вхід файлу. Сам введення файлу може бути невидимим будь-яким методом. Якщо ви хочете, щоб мітка виглядала як кнопка, існує багато рішень, наприклад:
label u {
-webkit-appearance: button;
-moz-appearance: button;
appearance: button;
text-decoration: none;
color: initial;
}
Тільки клас CSS & bootstrap
<div class="col-md-4 input-group">
<input class="form-control" type="text"/>
<div class="input-group-btn">
<label for="files" class="btn btn-default">browse</label>
<input id="files" type="file" class="btn btn-default" style="visibility:hidden;"/>
</div>
</div>
<input type="file">
додайте зображення, і <input style="position:absolute">
воно займе простір<input type="file">
Використовуйте наступний CSS для елемента файлу
position:relative;
opacity:0;
z-index:99;
якщо ви користуєтесь рейками і у вас виникли проблеми застосувати її, я хотів би додати кілька порад з оригінальної відповіді, опублікованої @Fernando Kosh
відкрийте свою application.js і додайте цей рядок нижче
// = вимагають bootstrap-filestyle.min
відкрийте свою каву і додайте цей рядок
$ (": файл"). стиль файлу ({buttonName: "btn-basic", buttonBreafore: true, buttonText: "Ваш текст тут", icon: false});
Ви можете просто додати якийсь фокус css. вам не потрібен JavaScript або більше вхідних файлів, і я зберігаю наявний атрибут значення . вам потрібно додати лише css . ви можете спробувати це рішення.
.btn-file-upload{
width: 187px;
position:relative;
}
.btn-file-upload:after{
content: attr(value);
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 48%;
background: #795548;
color: white;
border-radius: 2px;
text-align: center;
font-size: 12px;
line-height: 2;
}
<input type="file" class="btn-file-upload" value="Uploadfile" />
для мене це не працює власний текст з bootstrap-filestyle . Це допомагає в оформленні кнопок, але текст його дивно змінити, перш ніж перейти до боротьби з CSS, я спробуйте наступне:
$( document ).ready(function() {
$('.buttonText').html('Seleccione ficheros');
});
bootstrap-filestyle надає компонент як проміжок класу з іменем butonText, тому при завантаженні документа просто змініть текст. легко правильно, і він повинен працювати у всіх браузерах.
ура
Я зробив це так для свого проекту:
.btn-outlined.btn-primary {
color: #000;
}
.btn-outlined.btn-primary:active, .btn-outlined.btn-positive:active, .btn-outlined.btn-negative:active {
color:#000;
}
.btn-block {
display: block;
width: 100%;
padding: 15px 0;
margin-bottom: 10px;
font-size: 18px;
font-family: Arial, Helvetica, sans-serif;
text-align: center;
}
<label for="fileUpload" class="btn btn-primary btn-block btn-outlined">Your text</label>
<input type="file" id="fileUpload"style="display: none;">
Це альтернативне рішення, яке може вам допомогти. Це приховує текст, який з’являється поза кнопкою, змішуючи його з кольором тла діва. Тоді ви можете дати діві назву, яка вам подобається.
<div style="padding:10px;font-weight:bolder; background-color:#446655;color: white;margin-top:10px;width:112px;overflow: hidden;">
UPLOAD IMAGE <input style="width:100px;color:#446655;display: inline;" type="file" />
</div>