Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.11.2013, 19:12
Аспирант
Отправить личное сообщение для pashin76 Посмотреть профиль Найти все сообщения от pashin76
 
Регистрация: 03.10.2009
Сообщений: 57

Загрузка фала по onChange на input type=file
Если делаю submit кликом по кнопке, как в примере http://http://javascript.ru/forum/do...mi-iframe.html файл загружается, а если пытаюсь сделать submit формы по onChange на input type=file, то не работает.
Почему?
<form action="upload.php" method="post" target="hiddenframe" enctype="multipart/form-data" name="userform">
<input type="file" id="userfile" name="userfile"  onChange="userform.submit();"/>
<input type="submit" name="upload" id="upload" value="Загрузить" />
</form>
<div id="res"></div>
<iframe id="hiddenframe" name="hiddenframe" style="width:0px; height:0px; border:0px"></iframe>
Ответить с цитированием
  #2 (permalink)  
Старый 26.11.2013, 22:47
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Попробуй this.form.submit() .
Кстати, HTML не чувствителен к регистру, так что можно писать onchange для консистенции, тем более что одноименное свойство пишется именно onchange, а не onChange
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 27.11.2013, 09:06
Аспирант
Отправить личное сообщение для pashin76 Посмотреть профиль Найти все сообщения от pashin76
 
Регистрация: 03.10.2009
Сообщений: 57

Сообщение от danik.js Посмотреть сообщение
Попробуй this.form.submit() .
Все равно не работает

Вот код:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
	<script type="text/javascript">	
	
		function hideBtn(){
			$('#upload').hide();
			$('#res').html("Идет загрузка файла");
		}
		
		function handleResponse(mes) {
			$('#upload').show();
		    if (mes.errors != null) {
		    	$('#res').html("Возникли ошибки во время загрузки файла: " + mes.errors);
		    }	
		    else {
		    	$('#res').html("Файл " + mes.name + " загружен");	
		    }	
		}
	</script>


<?php

if(isset($_POST['upload'])){
    //Список разрешенных файлов
    $whitelist = array(".gif", ".jpeg", ".png");
	$data = array();
	$error = true;

	//Проверяем разрешение файла
    foreach  ($whitelist as  $item) {
		if(preg_match("/$item\$/i",$_FILES['userfile']['name'])) $error = false;
    }

    //если нет ошибок, грузим файл
    if(!$error) {

		$folder =  '/home/tmp/';//директория в которую будет загружен файл

		$uploadedFile =  $folder.basename($_FILES['userfile']['name']);

		if(is_uploaded_file($_FILES['userfile']['tmp_name'])){

			if(move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadedFile)){

		        $data = $_FILES['userfile'];
                $data['md5_file']=md5_file($uploadedFile);
			}
			else {
				$data['errors'] = "Во время загрузки файла произошла ошибка";
			}
		}
		else {
			$data['errors'] = "Файл не загружен";
		}
    }
    else{

		$data['errors'] = 'Вы загружаете запрещенный тип файла';
    }


    //формируем js-файл
    $res = '<script type="text/javascript">';
    $res .= "var data = new Object;";
    foreach($data as $key => $value){
    	$res .= 'data.'.$key.' = "'.$value.'";';
    }
    $res .= 'window.parent.handleResponse(data);';
    $res .= "</script>";

    echo $res;

}
else{
	die("ERROR");
}

?>
Ответить с цитированием
  #4 (permalink)  
Старый 27.11.2013, 10:49
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,561

Сообщение от pashin76 Посмотреть сообщение
Все равно не работает
Вызови программно click по кнопке при change :
<input type="file" id="userfile" name="userfile" onchange="upload.click()" />
Ответить с цитированием
  #5 (permalink)  
Старый 28.11.2013, 00:14
Аспирант
Отправить личное сообщение для pashin76 Посмотреть профиль Найти все сообщения от pashin76
 
Регистрация: 03.10.2009
Сообщений: 57

Сообщение от Rise Посмотреть сообщение
Вызови программно click по кнопке при change :
<input type="file" id="userfile" name="userfile" onchange="upload.click()" />
Так работает
Спасибо
Хотя поченму не работает по другому не понятно
Ответить с цитированием
  #6 (permalink)  
Старый 28.11.2013, 09:55
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Привед велосипедостроителям )))

$ext = pathinfo($file, PATHINFO_EXTENSION);
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
input и onChange sig Общие вопросы Javascript 3 22.08.2013 16:42
При добавлении DOCTYPE "плывут" размеры input type=text Demath (X)HTML/CSS 4 08.07.2012 18:27
onchange input вывести на страницу realgleb Общие вопросы Javascript 7 06.05.2012 12:53
input type='file' + getElementById vah-smile Элементы интерфейса 3 30.03.2011 05:24
< input type=file > не попадают в $_FILES ce39 Элементы интерфейса 8 01.10.2009 14:33