Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.05.2012, 21:17
Аватар для Джэксон
Аспирант
Отправить личное сообщение для Джэксон Посмотреть профиль Найти все сообщения от Джэксон
 
Регистрация: 21.05.2012
Сообщений: 89

input type="file"
Здравствуйте уважаемые форумчане! Назрела одна проблема с input type="file". Меня интересует как сделать так, чтобы в input можно было добавить только картинку, а другие типы файлов не добавлялись, но при этом вылезал alert с сообщением о том, что юзер не тот файл выбрал. Помогите пожалуйста это реализовать.
Ответить с цитированием
  #2 (permalink)  
Старый 27.05.2012, 22:19
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

<input id="file_browse" type="file" name="myfile" />
<script>
    document.getElementById( 'file_browse' ).onchange = function() {

        if ( this.value && !/\.(jpg|jpeg|bmp|gif|png)$/i.test( this.value ) ) {

            alert( "Вы выбрали не тот файл: " + this.value.replace( /\\/g, "/" ).split( '/' ).pop() );

        } else if ( this.value ) {

            alert( "Все ок!" );
        }
    }
</script>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 27.05.2012, 22:29
Аватар для Джэксон
Аспирант
Отправить личное сообщение для Джэксон Посмотреть профиль Найти все сообщения от Джэксон
 
Регистрация: 21.05.2012
Сообщений: 89

о спасибо большое я тут пока сидел думал тоже кое что сообразил.
<input type="file" id="getFile" onchange="poovImg();" name="imagesInp"/>
<script type="text/javascript">
function poovImg() {imageInput=document.getElementById('getFile').value;
if (/[.][jpg,png,gif,JPG,GIF,PNG][^exe,EXE]/.test(imageInput)) {alert('Ok');
}
else { alert('Можно загрузить картинки только в формате *.jpg, *.gif, *.png');
}
}
</script>

Последний раз редактировалось Джэксон, 28.05.2012 в 19:30.
Ответить с цитированием
  #4 (permalink)  
Старый 27.05.2012, 22:32
Аватар для Джэксон
Аспирант
Отправить личное сообщение для Джэксон Посмотреть профиль Найти все сообщения от Джэксон
 
Регистрация: 21.05.2012
Сообщений: 89

Можете подсказать, подойдёт такой вариант или нет?
Ответить с цитированием
  #5 (permalink)  
Старый 27.05.2012, 22:36
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Сразу видно что в статью по регуляркам вы даже не заглядывали, использовали исключительно подход шамана.

alert([
/[.][jpg,png,gif,JPG,GIF,PNG]/.test( 'aaa.jng' ),
/[.][jpg,png,gif,JPG,GIF,PNG]/.test( 'aaa.ggg' ),
/[.][jpg,png,gif,JPG,GIF,PNG]/.test( 'aaa.ggg.xxx' ),
/[.][jpg,png,gif,JPG,GIF,PNG]/.test( ',,.,,.,,' )
]).join('\n')
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 28.05.2012, 15:22
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

http://wufoo.com/html5/attributes/07-accept.html — может это поможет. Для старых браузеров, конечно, придется писать костыль. Хотя, возможно, есть решение на флеше.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #7 (permalink)  
Старый 28.05.2012, 17:20
Аватар для Джэксон
Аспирант
Отправить личное сообщение для Джэксон Посмотреть профиль Найти все сообщения от Джэксон
 
Регистрация: 21.05.2012
Сообщений: 89

Сообщение от Aetae
Сразу видно что в статью по регуляркам вы даже не заглядывали, использовали исключительно подход шамана.
ну да но как вы считаете такой код имеет право на существование?
Ответить с цитированием
  #8 (permalink)  
Старый 05.06.2012, 10:13
Аватар для Джэксон
Аспирант
Отправить личное сообщение для Джэксон Посмотреть профиль Найти все сообщения от Джэксон
 
Регистрация: 21.05.2012
Сообщений: 89

нет, к сожалению accept="image/*" не подходит Уже пробовал
Ответить с цитированием
  #9 (permalink)  
Старый 05.06.2012, 11:57
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Сообщение от Maxmaxmахimus Посмотреть сообщение
Мне одному кажется дибилизмом давать людям возможность совершить ошибку и потом упрекать их в этом алертом за место того чтобы НЕ ДАТЬ возможность совршить ошибку и сделать так чтобы при обзоре файлов были видны только картинки указав это в специальном атрибуте тега input?
<input type="file" name="img" accept="image/*">

это не будет работать в IE9<
Ответить с цитированием
  #10 (permalink)  
Старый 05.06.2012, 12:04
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

А так ?
<script type="text/javascript">
<!--
function process_form(the_form)
{
	var element_names = new Object()
		element_names["req_file"] = "Файл"

	imageType=document.getElementById('fld1').value.replace(/^\s*.*(\.[^\.\s]*)\s*$/img,'$1');
	imageType=imageType.search(/[\.](?!exe|EXE)(?:jpg|png|gif|JPG|GIF|PNG)$/mg);
	if (imageType!=0) {
		alert('Неверный тип файла,\n Допустимые типы: jpg,png,gif')
		return false;
	}
	if (document.all || document.getElementById)
	{
		for (i = 0; i < the_form.length; ++i)
		{
			var elem = the_form.elements[i]
			if (elem.name && elem.name.substring(0, 4) == "req_")
			{
				if (elem.type && (elem.type=="text" || elem.type=="textarea" || elem.type=="password" || elem.type=="file") && elem.value=='')
				{
					alert("\"" + element_names[elem.name] + "\" это поле обязательно для заполнения в этой форме.")
					elem.focus()
					return false
				}
			}
		}
	}

} // -->
</script>

		<form id="upload_IMG" class="container" method="post" enctype="multipart/form-data" action="/profile.php?action=upload_avatar2&amp;" onsubmit="return process_form(this)">
			<fieldset>
				<legend><span>Укажите файл с изображением для загрузки</span></legend>
				<div class="fs-box">
				<input type="hidden" name="form_sent" value="1" />
				<input type="hidden" name="MAX_FILE_SIZE" value="30480" />
				<p class="fldfile required">
					<label for="fld1">Файл<em>(Обязательно)</em></label><br />
					<span class="input"><input id="fld1" name="req_file" type="file" size="40" /></span>
				</p>
				<p class="infofield">Изображение не может быть больше чем 30480 байт (30 KB).</p>
				</div>
			</fieldset>
			<p class="formsubmit"><input type="submit" class="button" name="upload" value="Загрузить" /></p>
		</form>

Последний раз редактировалось Deff, 05.06.2012 в 19:58.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
input type="file" (fakepath) join jQuery 3 10.03.2012 17:52
Стилизация input type="file" Vitaly (X)HTML/CSS 7 21.02.2012 19:54
кнопка "+" для input type="file" Lutsk Элементы интерфейса 5 18.11.2011 20:45
input type="button" внутри input type="file" x-yuri Firefox/Mozilla 1 11.05.2011 17:51
как передать click на input type="file" virginkoks Events/DOM/Window 3 18.02.2011 16:32