Вы имеете в виду что-то вроде этого?
http://jsfiddle.net/CSvjw/
$('input[type=text]').click(function() {
$('input[type=file]').trigger('click');
});
$('input[type=file]').change(function() {
$('input[type=text]').val($(this).val());
});
Обратите внимание, однако, что значение, указанное в файле ввода, является поддельным по соображениям безопасности.Если вы хотите, чтобы имя файла отображалось, вы можете вырезать косую черту.
Вот пример того, как сделать это, используя разбиение строки и массив pop:
http://jsfiddle.net/CSvjw/1/
$('input[type=text]').click(function() {
$('input[type=file]').trigger('click');
});
$('input[type=file]').change(function() {
var vals = $(this).val(),
val = vals.length ? vals.split('\\').pop() : '';
$('input[type=text]').val(val);
});
Вы можете отрегулировать это далее для учета систем, которые используют прямой слеш в качестве разделителя каталогов.Также важно отметить, что если вы сделаете это, вы потеряете функциональность многих современных браузеров, где пользователи могут перетаскивать файлы со своего компьютера прямо на вход файла.На вашем месте я бы принял эту парадигму, стилизуя ввод файла, а не пытаясь превратить ввод текста в нечто, чем это не является.