JavaScript и диалоговое окно

 
0
 
JavaScript
ava
pentium | 06.08.2007, 13:16
Здравствуйте Уважаемые программисты!

У меня такой вопрос. У меня текстовой редактор на Веб странице. На редакторе есть кнопка для вставки рисунка прямо в редактор. При вставке рисунка в теге <img src=" будет равен полному пути выбранного файла, а мне бы хотелось что бы это было только имя файла. Можно ли узнать имя файла которого выбрал клиент в диалоговом окне и присвоить его в тег.
Comments (11)
ava
Alx | 06.08.2007, 17:00 #
pentium,
name.substring(name.lastIndexOf("/")+1)
ava
pentium | 08.08.2007, 15:32 #
Уважаемый Алх! Спасибо Вам за ответ. Но Я вот этот name и ищу. Не знаете как его достать.
ava
Alx | 08.08.2007, 15:52 #
name это то, что содержится в переменной после ввода. например C:/Temp/xxx.jpg данный код вернет xxx.jpg
ava
Astraller | 08.08.2007, 17:04 #
если я правильно понял:

name=document.getElementById('[ID инпута]').value;
ava
Alx | 08.08.2007, 19:42 #
ну да
ava
smartov | 08.08.2007, 21:37 #
Но ведь это
Цитата (Alx @ 6.8.2007, 16:00 findReferencedText)
name.substring(name.lastIndexOf("/")+1)


актуально только для линукса smile в винде разделитель пути - '\'
ava
Alx | 09.08.2007, 03:29 #
smartov,
и вправду :)

тогда так:

name = name.replace(/\\/g,"/");
obj.value = name.substring(name.lastIndexOf("/")+1);


только толку вссе равно мало, т.к. если obj - input:file, политика безопасности не даст менять его value..
ava
smartov | 09.08.2007, 12:18 #
Цитата (Alx @ 9.8.2007, 02:29 findReferencedText)
если obj - input:file, политика безопасности не даст менять его value

Да.
Поэтому наверное стоит вот так


<body>

<input type="file" id="my_file_field_id" />
<input type="button" onclick="alert(get_filename('my_file_field_id'));" value="Show me that filename!" />

<script>

var OSName="";
if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";

function get_filename(file_field_id) {
if (file_field_id == null)
return;

var file_field = document.getElementById(file_field_id);
if (file_field == null)
return;

if (OSName == "")
return;

var full_filename = file_field.value;
var filename = '';

//find filename concerning path separator type
switch (OSName) {
case "Windows":
filename = full_filename.substring(full_filename.lastIndexOf("\\")+1);
break;

default:
filename = full_filename.substring(full_filename.lastIndexOf("/")+1);
break;
}

//remove single and double quotes from line end if any found
filename = filename.replace(/["']$/, "");

return filename;
}

</script>

</body>
ava
Alx | 09.08.2007, 13:01 #
а что это меняет? и почему по вашему это лучше, чем просто перебить все слеши вправо?
ava
smartov | 09.08.2007, 13:36 #
Alx,
Цитата (Alx @ 9.8.2007, 12:01 findReferencedText)
а что это меняет?

работает везде верно

Цитата (Alx @ 9.8.2007, 12:01 findReferencedText)
и почему по вашему это лучше, чем просто перебить все слеши вправо?

Ты притворяешься или издеваешься не пойму что-то.
Цитата (Alx @ 9.8.2007, 02:29 findReferencedText)
input:file, политика безопасности не даст менять его value..

ava
Alx | 09.08.2007, 14:45 #
Цитата (smartov @ 9.8.2007, 13:36 findReferencedText)
Ты притворяешься или издеваешься не пойму что-то.

Цитата(Alx @ 9.8.2007, 02:29 Найти цитируемый пост)

input:file, политика безопасности не даст менять его value..

хочешь сказать, что твой пример позволит его менять?
он все равно не решает задачу, ты всего лишь добавил кнопку и остальной html-код..
если я добавлю то же самое к моему примеру работать будет точно также, и везде.
и кода в 3 раза меньше:


<body>
<input type="file" id="my_file_field_id" />
<input type="button" onclick="alert(get_filename('my_file_field_id'));" value="Show me that filename!" />
<script>
function get_filename(file_field_id) {
var name = document.getElementById(file_field_id).value;
name = name.replace(/\\/g,"/");
return name.substring(name.lastIndexOf("/")+1);
}
</script>
</body>


я пытаюсь помочь, а не издеваюсь ни над кем, выбирай выражения../
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit