Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.07.2013, 11:30
Кандидат Javascript-наук
Отправить личное сообщение для zzzzzz Посмотреть профиль Найти все сообщения от zzzzzz
 
Регистрация: 25.09.2012
Сообщений: 111

свой метод click()
Здравствуйте
<input type="file" id="fileElem" multiple accept="image/*" style="display:none" onchange="handleFiles(this.files)">
<a href="#" id="fileSelect">Select some files</a>

При клике на ссылку fileSelect запускаю функцию а в ней document.getElementById("fileElem").click(); что с свою очередь эмитирует нажатие на input с типом file.
Все это для того чтобы скрыть некрасивую форму загрузки файлов.

У jquery есть метод click(). Как на чистом js написать этот метод и что мне для этого нужно

делал так
document.getElementById("fileElem").onclick;

но не выходит, да и мыслей никаких нет

Последний раз редактировалось zzzzzz, 08.07.2013 в 11:49.
Ответить с цитированием
  #2 (permalink)  
Старый 08.07.2013, 11:53
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

я делал это так: внизу по слоям идет красивая кнопочка, а поверх прозрачный итем и файлом.. какбы нажимается кнопочка, но на самом деле идет клик итема
Ответить с цитированием
  #3 (permalink)  
Старый 08.07.2013, 12:00
Кандидат Javascript-наук
Отправить личное сообщение для zzzzzz Посмотреть профиль Найти все сообщения от zzzzzz
 
Регистрация: 25.09.2012
Сообщений: 111

skrudjmakdak спасибо, но в моем случае input один а красивых кнопочек будет n-количество(попап окна)

Да и для расширения кругозора хочу научиться писать свой метод клик
Ответить с цитированием
  #4 (permalink)  
Старый 08.07.2013, 12:06
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

тоже как то хотел сделать как вы, но мне сказали что это вроде не кроссбраузерно.. лично сам не проверял, утверждать не буду
Ответить с цитированием
  #5 (permalink)  
Старый 08.07.2013, 12:12
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

вот, даже extjs так делает, как я сказал))
http://docs.sencha.com/extjs/4.1.3/e...le-upload.html
Ответить с цитированием
  #6 (permalink)  
Старый 08.07.2013, 12:16
Кандидат Javascript-наук
Отправить личное сообщение для zzzzzz Посмотреть профиль Найти все сообщения от zzzzzz
 
Регистрация: 25.09.2012
Сообщений: 111

Может подскажите в какую сторону хоть копать, я не знаю даже с чего ночать.

А на счет кроссбраузерности, если не ошибаюсь реализация на jquery кроссбраузерна
Ответить с цитированием
  #7 (permalink)  
Старый 08.07.2013, 12:27
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

вот, набросал
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<style type="text/css">
.input_file
{
position: relative;
width: 200px;
height: 30px;
}

.text
{
position: absolute;
top: 0px;
left: 0px;
width: 130px;
height: 24px;
}

.button
{
position: absolute;
top: 0px;
right: 0px;
width: 60px;
height: 30px;
}

.file
{
height: 30px;
width: 200px;
position: absolute;
top: 0px;
left: 0px;
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);
-moz-opacity: 0;
-khtml-opacity: 0;
opacity: 0; 
}
		</style>
	</head>
	<body>
		<form method="post" action="/login.php">
			<div class="input_file">
				<input type="text" class="text">
				<div class="button">выбрать</div>
				<input type="file" class="file">
			</div>
		</form>
	</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 08.07.2013, 12:34
Кандидат Javascript-наук
Отправить личное сообщение для zzzzzz Посмотреть профиль Найти все сообщения от zzzzzz
 
Регистрация: 25.09.2012
Сообщений: 111

а как свой click() написать не подскажите? хоть что нибудь от чего можно оттолкнуться
Ответить с цитированием
  #9 (permalink)  
Старый 08.07.2013, 12:41
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от zzzzzz
А на счет кроссбраузерности, если не ошибаюсь реализация на jquery кроссбраузерна
Причем тут jQuery? Вызов метода .click() кнопки не приводит к открытию диалогового окна в некоторых браузерах (не помню каких).
Ответить с цитированием
  #10 (permalink)  
Старый 08.07.2013, 15:01
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

input[type="file"] {
   position: absolute;
   visibility: hidden;
   z-index: -100;
}


<div>
   <input type="file" />
   <input onclick="fileLoad(this)" type="button" value="Загрузить файл" />
</div>


function fileLoad(a) {
   a.parentNode.getElementsByTagName('input')[0].click();
}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция или метод click() jsjob Общие вопросы Javascript 8 15.01.2013 01:19
свой JS фреймворк с блэкджеком. заминочка. assert Общие вопросы Javascript 10 16.09.2012 19:19
live click выполняется несколько раз hara jQuery 9 09.06.2010 10:58
Добавить свой метод к элементу alekciy Events/DOM/Window 6 16.02.2009 19:29