Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.03.2013, 01:05
Интересующийся
Отправить личное сообщение для denvasden Посмотреть профиль Найти все сообщения от denvasden
 
Регистрация: 14.03.2013
Сообщений: 13

Две и более форм на отправку файлов
Товарищи! Очень нужна помощь!
вот моя форма отправки файла:
<div id="output_<?php echo $id; ?>">
</div>
<form action="uploader.php" class="editbox" id="photo_upload_<?php echo $id; ?>" enctype="multipart/form-data" method="post" >
	<label>Title
	<span class="small">Title of the File</span>
	</label>
	<input type="text" name="mName" id="mName" />

	<label>File
	<span class="small">Choose a File</span>
	</label>
	<input type="file" name="mFile" id="mFile" />
	<button type="submit" class="red-button" id="uploadButton_<?php echo $id; ?>">Upload (1MB)</button>
	<div class="spacer"></div>
</form>


предполагается, что таких на страничке минимум две

вот мой сабмит скрипт:
$(document).ready(function()
{
	var id = $('.edit').attr('id');

	$('#photo_upload_'+id).on('submit', function(e)
	{
		e.preventDefault();

		$('#uploadButton_'+id).attr('disabled', '');
		$('#output_'+id).html('<div style="padding:10px"><img src="images/ajax-loader.gif" alt="Please Wait"/> <span>Uploading...</span></div>');
		$(this).ajaxSubmit({
			target: '#output_'+id,
			success:  afterSuccess
		});
	});
});

function afterSuccess()
{
	var id = $('.edit').attr('id');

	$('#photo_upload_'+id).resetForm();
	$('#uploadButton_'+id).removeAttr('disabled');
}


Для примера, у первой формы с id="photo_upload_1" нормально срабатывает кнопка сабмит и сообщение об успешной операции возвращается в id="output_1", а вот вторая форма с id="photo_upload_2" после отправки передается обработчику action="uploader.php" и URL принимает вид http://examples/uploader.php.
И в том и в другом случаи если соблюдены все условия отправки, файл отправляется и помещается в указанную директорию.

Как это победить? У меня уже крыша едет(((
Ответить с цитированием
  #2 (permalink)  
Старый 15.03.2013, 09:32
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от denvasden
У меня уже крыша едет
Это очень заметно. Два раза прочитал - в чем проблема так и не понял. Может это уже что-то со мной...
Ответить с цитированием
  #3 (permalink)  
Старый 15.03.2013, 11:23
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

действительно странно)
"у меня, если всё сделать правильно - всё правильно работает, как это победить??"
Ответить с цитированием
  #4 (permalink)  
Старый 15.03.2013, 12:23
Интересующийся
Отправить личное сообщение для denvasden Посмотреть профиль Найти все сообщения от denvasden
 
Регистрация: 14.03.2013
Сообщений: 13

danik.js,
ну получается так, что по клику на первую кнопку страничка без перезагрузки получает ответ, а при клике на вторую перекидывает на uploader.php
keen,
если не сложно покажите, как вы это делаете

я уже второй день мучаюсь, весь интернет облазил
Ответить с цитированием
  #5 (permalink)  
Старый 15.03.2013, 12:28
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Так ведь обработчик события submit только для первой формы цепляется. пробуй $('.editbox').on('submit'... ну и там дальше отвязывайся от id.
Ответить с цитированием
  #6 (permalink)  
Старый 15.03.2013, 12:41
Интересующийся
Отправить личное сообщение для denvasden Посмотреть профиль Найти все сообщения от denvasden
 
Регистрация: 14.03.2013
Сообщений: 13

danik.js, я не очень силен в jquery и javascript
Цитата:
ну и там дальше отвязывайся от id
как это понять?
хотите сказать, что тут ('#uploadButton_'+id), ('#output_'+id), target: '#output_'+id,

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

Сообщение от denvasden
нужно убрать id?
Нужно убрать. Ну конечно не просто убрать, а изменить код так, чтоб все работало. Можно конечно и через id, используюя циклы, но это быдлокодерство.
Ответить с цитированием
  #8 (permalink)  
Старый 15.03.2013, 13:03
Интересующийся
Отправить личное сообщение для denvasden Посмотреть профиль Найти все сообщения от denvasden
 
Регистрация: 14.03.2013
Сообщений: 13

danik.js, ну мне же нужно в определенное место отправлять ответ вот сюда
<div id="output_<?php echo $id; ?>">
</div>
и делаю я это вот так
$('#output_'+id).html('<div style="padding:10px"><img src="images/ajax-loader.gif" alt="Please Wait"/> <span>Uploading...</span></div>');
target: '#output_'+id,


неужели это не верно?
Ответить с цитированием
  #9 (permalink)  
Старый 15.03.2013, 13:06
Интересующийся
Отправить личное сообщение для denvasden Посмотреть профиль Найти все сообщения от denvasden
 
Регистрация: 14.03.2013
Сообщений: 13

danik.js, я пока что очень слаб в jquery и javascript не судите строго
Ответить с цитированием
  #10 (permalink)  
Старый 15.03.2013, 13:10
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Нужно организовать связь между формой и div'ом с результатом.
Как вариант через $(form).prev()
Другой вариант через data-* атрибут. например
<form data-output="output_<?=$id?>">

Или может у них есть общий (для каждой пары свой) родитель?
Ответить с цитированием
Ответ



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

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