Есть ли способ стилизовать (или скрипт) <input type=file />
элемент, чтобы была видна только кнопка «Обзор» без текстового поля?
Спасибо
Изменить : Просто чтобы уточнить, зачем мне это нужно. Я использую многофайловый код загрузки с http://www.morningz.com/?p=5, и ему не нужно вводить текстовое поле, потому что оно никогда не имеет значения. Скрипт просто добавляет новый выбранный файл в коллекцию на странице. Было бы намного лучше без текстового поля, если это возможно.
javascript
html
css
Андрия
источник
источник
У меня было чертовски много времени, пытаясь достичь этого. Я не хотел использовать решение Flash, и ни одна из библиотек jQuery, на которые я смотрел, не была надежной во всех браузерах.
Я придумал собственное решение, которое полностью реализовано в CSS (за исключением изменения стиля onclick, чтобы кнопка выглядела «нажатой»).
Вы можете попробовать рабочий пример здесь: http://jsfiddle.net/VQJ9V/307/ (протестировано в FF 7, IE 9, Safari 5, Opera 11 и Chrome 14)
Он работает, создавая большой файл ввода (с font-size: 50px), затем оборачивая его в div, который имеет фиксированный размер и переполнение: скрытый. Ввод затем виден только через этот «оконный» div. Элементу div можно присвоить фоновое изображение или цвет, текст можно добавить, а ввод можно сделать прозрачным, чтобы раскрыть фон div:
HTML:
CSS:
Дайте мне знать, если с этим возникнут проблемы, и я постараюсь их исправить.
источник
Я потратил свой день сегодня, чтобы заставить это работать. Я не нашел ни одного решения здесь, работающего с каждым из моих сценариев.
Потом я вспомнил, что видел пример для загрузки файла JQuery без текстового поля. Поэтому я взял их пример и урезал до соответствующей части.
Это решение по крайней мере работает для IE и FF и может быть полностью стилизовано. В приведенном ниже примере ввод файла скрыт под причудливой кнопкой «Добавить файлы».
источник
Скройте элемент input-file и создайте видимую кнопку, которая вызовет событие click этого input-файла.
Попробуй это:
CSS
HTML:
JAVASCRIPT (Jquery):
источник
Скройте тег входного файла с помощью css, добавьте метку и назначьте ее кнопке ввода. ярлык будет кликабельным, и при нажатии будет запущен диалог с файлом.
Добавьте стиль к метке в виде кнопки.
Live Demo
источник
onchange
обработчик,input
чтобы некоторый код JS мог получить информацию о загруженном файле.Это будет очень сложно. Проблема с типом ввода файла состоит в том, что он обычно состоит из двух визуальных элементов, а обрабатывается как один DOM-элемент. Добавьте к этому, что несколько браузеров имеют свой собственный внешний вид для ввода файлов, и вы настроены на кошмар. См. Эту статью на quirksmode.org о странностях, которые имеет входной файл. Я гарантирую вам, что это не сделает вас счастливым (я говорю из опыта).
[РЕДАКТИРОВАТЬ]
На самом деле, я думаю, вам может быть неудобно помещать свои данные в элемент контейнера (например, в div) и добавлять к элементу отрицательное поле. Эффективно скрывая часть текстового поля вне экрана. Другой вариант - использовать технику в статье, которую я связал, чтобы попытаться оформить ее как кнопку.
источник
Исправлена работа во всех браузерах.
Я тестировал в FF, Chrome & IE - работает нормально, применял стили тоже: D
источник
Я попытался реализовать два лучших решения, и это оказалось ОГРОМНОЙ тратой времени для меня. В конце концов, применение этого класса .css решило проблему ...
Готово! супер чистый и супер простой ...
источник
Еще один простой способ сделать это. Сделайте тег «тип файла ввода» в HTML и скрыть его. Затем нажмите кнопку и отформатируйте ее в соответствии с потребностями. После этого используйте javascript / jquery, чтобы программно щелкнуть тег ввода при нажатии кнопки.
HTML: -
JavaScript: -
JQuery: -
CSS: -
Вот рабочая скрипка JS для того же: - http://jsfiddle.net/32na3/
источник
Я использовал часть кода, рекомендованного выше, и после многих часов траты своего времени, я в конечном итоге пришел к решению css bag free.
Вы можете запустить его здесь - http://jsfiddle.net/WqGph/
но потом нашел лучшее решение - http://jsfiddle.net/XMMc4/5/
источник
onchange
событие не запускается для скрытогоinput
элемента.Вот мое хорошее старое лекарство:
По крайней мере, это сработало в Safari.
Легко и просто.
источник
Вы можете пометить изображение, чтобы при нажатии на него происходило событие нажатия кнопки. Вы можете просто сделать обычную кнопку невидимой:
Он работал для меня во всех браузерах и очень прост в использовании.
источник
Вы можете отправить событие нажатия на скрытый файл ввода следующим образом:
источник
var ev = document.createEvent('HTMLEvents');
изменить HTMLEvents на MouseEventsvar ev = document.createEvent('MouseEvents');
HTML:
Jquery
Надеюсь, это работает :)
источник
Вы можете задать для элемента ввода непрозрачность шрифта 0. Это позволит скрыть текстовое поле, не скрывая кнопку «Выбрать файлы».
Никакого JavaScript не требуется, ясно, кросс-браузер еще в IE 9
Например,
источник
У меня есть действительно хакерское решение с этим ...
Проблема в том, что атрибут width, скрывающий текстовое поле, будет заметно различаться в разных браузерах, в разных темах Windows XP и так далее. Может быть, это то, с чем вы можете работать, хотя? ...
источник
Я знаю, что это старый пост, но простой способ сделать текст исчезнувшим - просто установить цвет текста на ваш фон.
например, если ваш фон ввода текста белый, то:
Это не повлияет на текст выбора файла, который все еще будет черным из-за браузера.
источник
Это работает для меня:
источник
Мое решение состоит в том, чтобы просто установить его в div, как сказал «druveen», однако я добавил свой собственный стиль кнопок в div (чтобы он выглядел как кнопка с: hover), и я просто установил стиль «opacity: 0;» на вход. Создает для меня очарование, надеюсь, что то же самое для вас.
источник
Я только что ввел входной файл с шириной: 85px, и текстовое поле вообще исчезло
источник
Этот HTML-код отображается только кнопка Загрузить файл
источник
источник
Для меня самый простой способ - использовать цвет шрифта, такой как цвет фона. Простой, не элегантный, но полезный.
источник
Итак, вот лучший способ сделать это для всех браузеров:
Забудь CSS!
источник
Все эти ответы симпатичны, но CSS не сработает, поскольку он не одинаков для всех браузеров и устройств, первый написанный мной ответ будет работать во всем, кроме Safari. Чтобы он работал во всех браузерах постоянно, его нужно динамически создавать и создавать заново каждый раз, когда вы хотите очистить вводимый текст:
источник
Ответ tmanthey довольно хороший, за исключением того, что вы не можете играть с border-width в Firefox v20. Если вы видите ссылку (демо, не могу показать здесь), они решили проблему, используя font-size = 23px, transform: translate (-300px, 0px) scale (4) для Firefox, чтобы увеличить кнопку.
Другие решения, использующие .click () в другом div, бесполезны, если вы хотите сделать это полем ввода drag'n'drop.
источник
Здесь есть несколько действительных вариантов, но я подумал, что смогу дать то, что придумал, пытаясь исправить подобную проблему. http://jsfiddle.net/5RyrG/1/
источник
Решено с помощью следующего кода:
<div style="overflow: hidden;width:83px;"> <input style='float:right;' name="userfile" id="userfile" type="file"/> </div>
источник
Я написал это:
Отлично работает во всех браузерах, без jQuery, без CSS.
источник
Вот упрощенная версия популярного решения @ ampersandre, которое работает во всех основных браузерах. Asp.NET разметка
Код JQuery
код CSS
Использует скрытый триггер щелчка «UploadButton» для обратной передачи со стандартным сервером. Текст с «Upload File» выталкивает элемент управления вводом из поля обертки, когда он переполняется, поэтому нет необходимости применять какие-либо стили для элемента управления «file input». Селектор $ ([id $ = "FileInput"]) разрешает раздел идентификаторов со стандартными префиксами ASP.NET. Значение текстового поля FilePath устанавливается из кода сервера после hdnFileName.Value после загрузки файла.
источник