У мене був чорт часу, намагаючись досягти цього. Я не хотів використовувати рішення Flash, і жодна з бібліотек jQuery, на яку я дивився, не була надійною для всіх браузерів.
Я придумав власне рішення, яке повністю реалізовано в CSS (за винятком зміни стилю onclick, щоб кнопка виглядала "натиснутою").
Можна спробувати робочий приклад тут: http://jsfiddle.net/VQJ9V/307/ (перевірено у FF 7, IE 9, Safari 5, Opera 11 та Chrome 14)
Він працює, створюючи великий вхід файлу (з розміром шрифту: 50 пікселів), потім обертаючи його в div, який має фіксований розмір і переповнення: приховано. Потім вхід буде видно лише через цей "віконний" розділ. Диві можна надати фонове зображення або колір, текст можна додати, а введення можна зробити прозорим, щоб розкрити фон div:
HTML:
<div class="inputWrapper">
<input class="fileInput" type="file" name="file1"/>
</div>
CSS:
.inputWrapper {
height: 32px;
width: 64px;
overflow: hidden;
position: relative;
cursor: pointer;
/*Using a background color, but you can use a background image to represent a button*/
background-color: #DDF;
}
.fileInput {
cursor: pointer;
height: 100%;
position:absolute;
top: 0;
right: 0;
z-index: 99;
/*This makes the button huge. If you want a bigger button, increase the font size*/
font-size:50px;
/*Opacity settings for all browsers*/
opacity: 0;
-moz-opacity: 0;
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0)
}
Повідомте мене, чи є з цим якісь проблеми, і я спробую їх виправити.