Вход

Просмотр полной версии : Не передает value из input-а в input


Dimka-Chelios
21.09.2014, 00:50
Всем Добрый день!
Имеется:
<input type="file" name="uploadfile" onchange="newFilename(this.value);">
<input type="text" id="fileName">
... и функция ...
<script type="text/javascript">
function newFilename(fileName){
var pos = fileName.lastIndexOf("\\");
if(fileName.lastIndexOf("\\") != -1) {document.getElementById("fileName").value=fileName.substr(pos+1);}
}
</script>

После выбора файла, его имя "копируется" в инпут id="fileName", при этом я обрезаю путь, чтобы оставить только имя файла.

Работает в Опере и Хроме последних версийи и в IE(версии 11), а в FF не хочет. Подскажите, как заставить лисичку работать, буду очень признателен.

kostyanet
22.09.2014, 00:30
Откуда там пути-то взялись? Нет их там. Посмотрите в консоли или хотя бы алертом.

kostyanet
22.09.2014, 00:32
А, да, в Хроме есть дебилизм такой, он какую-то соплю цепляет к имени файла в value. Нашел у себя, вот так смахивайте:

elem.value = files[id].value.split('\\').pop(); // get rid of fakepath

ЗЫ Это вот если взять files из кнопки, там они могут быть, но я даже не проверял, ибо абсолютно бесполезно на них смотреть.

ЗЗЫ его имя "копируется" в инпут id="fileName",

чтоб нескучно было жЫть :)

Dimka-Chelios
22.09.2014, 13:33
Нашел у себя, вот так смахивайте:
elem.value = files[id].value.split('\\').pop(); // get rid of fakepath


Т.К. функция принимает в параметр(fileName) value из инпута, сделал вот так:
function newFilename(fileName{
document.getElementById("fileName").value=fileName.split("\\").pop();
}
ВСЁ ЗАРАБОТАЛО! СПАСИБО КОСТЯН!
Тавтология конечно у меня: параметр 'fileName' и id='fileName':D

P.S. А затеял это все я для того чтобы заменить стандартный <input type="file"> на стилизованый (собранный из других элементов).