Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   забрать значение type=text (https://javascript.ru/forum/jquery/30963-zabrat-znachenie-type%3Dtext.html)

neon_tmn 22.08.2012 08:40

забрать значение type=text
 
Здравствуйте, возникла проблемка. Казалось бы ерунда.
Настраиваю под свои нужды prupload (мультизагрузка файлов).
Суть в том, что есть input type=text, я хочу передать значение в нем в другой файл обработчик.
если я делаю так:
<input type=text id="descript1" name="descript1">

и передаю потом:
<script type="text/javascript">
$(function() {
$("#html5_uploader").pluploadQueue({
// General settings
runtimes : 'html5',
url : 'upload.php',
max_file_size : '10mb',
multipart_params: {"description1": $("input[name=descript1]").val()},
});

});
</script>

То в файл upload.php в description1 передается пустота.

Если я в input жестко присваиваю значение value, тогда передается то, что присвоего в value.
Вот так:
<input type=text id="descript1" name="descript1" value="Какое-то значение">

и передаю потом:
<script type="text/javascript">
$(function() {
$("#html5_uploader").pluploadQueue({
// General settings
runtimes : 'html5',
url : 'upload.php',
max_file_size : '10mb',
multipart_params: {"description1": $("input[name=descript1]").val()},
});

});
</script>

в upload.php получаю строку "Какое-то значение".
Даже если я в input type=text напишу что-то свое затерев "Какое-то значение", то все равно в upload.php я получу "Какое-то значение".
Пробовал input вставлять после java скрипта, но толку нет. все тот же результат.
Подскажите, в какую сторону копать? или может у меня явно допущена ошибка, которую я не вижу?

neon_tmn 22.08.2012 09:19

Попробовал так:
<select id="descript1" name="descript1"><option value="1">1</option><option value="2">2</option><option value="3">3</option></select>

ну и передать естественно multipart_params: {"description1": $("select[name=descript1]").val()},

Теперь он всегда берет value="1", не зависимо от того, что я выбираю.

LittlePony 22.08.2012 10:10

можно посмотреть на страницу с такими чудесами?

Deff 22.08.2012 10:16

Цитата:

Сообщение от neon_tmn
ну и передать естественно multipart_params: {"description1": $("select[name=descript1]").val()},

Теперь он всегда берет value="1", не зависимо от того, что я выбираю.

neon_tmn, Скорее всего Вы считываете для передачи значение value раньше его изменения пользователем -
Вариант тестирования данной ситуации - *Если Пустота - то вы считали до изменения поля value

<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>

<script type="text/javascript"> var changeValue='';</script>
 <input type=text id="descript1" name="descript1" oninput="changeValue=this.value"> <input type=button onclick="Alert()" value="Cмотреть">

<script type="text/javascript">
function Alert() {
  alert(changeValue);
}
</script>

LittlePony 22.08.2012 10:19

Цитата:

Сообщение от Deff (Сообщение 199573)
передачи значение value раньше его изменения пользоватеоем

автор писал, что и если он в html заменит значение, то всё равно ему приходит другое.

Deff 22.08.2012 10:20

LittlePony,
Тут подстраховка со второй переменной

neon_tmn 22.08.2012 11:20

LittlePony, делаю на локальном апаче, поэтому наверное нигде.

Deff, открываю страницу в браузере. передо мной мультизагрузчик и мой type=text. Событие мультизагрузчика обрабатывается в файле upload.php.
Я в input ввожу значение, потом нажимаю на ссылку, по которой происходит обработка в upload.php. Поэтому раньше передаться никак не может.

Deff 22.08.2012 11:21

neon_tmn,
Поставьте мой тест
<script type="text/javascript"> var changeValue='';</script> 
<input type=text id="descript1" name="descript1" oninput="changeValue=this.value">


- передавайте переменную changeValue

neon_tmn 22.08.2012 11:24

В самом простом виде так:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<link rel="stylesheet" href="jquery.plupload.queue/css/jquery.plupload.queue.css" type="text/css" media="screen" />

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript" src="http://bp.yahooapis.com/2.4.21/browserplus-min.js"></script>

<script type="text/javascript" src="../js/plupload.js"></script>
<script type="text/javascript" src="../js/plupload.flash.js"></script>
<script type="text/javascript" src="../js/plupload.html5.js"></script>
<script type="text/javascript" src="../js/jquery.plupload.queue/jquery.plupload.queue.js"></script>
</head>
<body>

<select id="descript1" name="descript1"><option value="1">1</option><option value="2">2</option><option value="3">3</option></select>

<form>
<div>
<div id="html5_uploader" style="width: 450px; height: 330px;">You browser doesn't support native upload. Try Firefox 3 or Safari 4.</div>
</div>
</form>

<script type="text/javascript">
$(function() {
$("#html5_uploader").pluploadQueue({
runtimes : 'html5',
url : 'upload.php',
max_file_size : '10mb',
multipart_params: {"description1": $("select[name=descript1]").val()},
});

});
</script>

</body>
</html>

neon_tmn 22.08.2012 11:28

Deff, сделал так:
<select id="descript1" name="descript1" oninput="changeValue=this.value"><option value="1">1</option><option value="2">2</option><option value="3">3</option></select>

и ниже
<script type="text/javascript">


$(function() {
var changeValue='';

// Setup html5 version
$("#html5_uploader").pluploadQueue({
// General settings
runtimes : 'html5',
url : 'upload.php',
max_file_size : '10mb',
chunk_size : '1mb',
unique_names : true,
multipart: true,
multipart_params: {"description1": changeValue},
filters : [{title : "Image files", extensions : "jpg,gif,png"},],
});

});
</script>


upload.php возвращает пустоту

Deff 22.08.2012 11:31

neon_tmn,
Пробуйте заменить эту строку
multipart_params: {"description1": $("select[name=descript1]").val()},
на
на multipart_params: {"description1": $("select[name='descript1']").val()},

Неясно наличие запятой на конце

neon_tmn 22.08.2012 11:37

попробовал простейший пример:
$(function() {

$("#all").click(function(){
alert($("select[name=descript1]").val());
});

// Setup html5 version
$("#html5_uploader").pluploadQueue({
// General settings
runtimes : 'html5',
url : 'upload.php',
max_file_size : '10mb',
chunk_size : '1mb',
unique_names : true,
multipart: true,
multipart_params: {"description1": $("select[name=descript1]").val()},
filters : [{title : "Image files", extensions : "jpg,gif,png"},],
});

});


ведь выводит то, что выбрано. такое чувсто, что в строку multipart_params: {"description1": $("select[name=descript1]").val()}, один раз попадает начальное значение и на этом все. как бы передать в эту строку не начальное значение а текущее.

neon_tmn 22.08.2012 11:39

Deff, попробовал поставить одинарные кавычки, как вы советовали. все равно ставит только начальное значение.

Deff 22.08.2012 11:42

neon_tmn,
Забирайте строку по событию и наверно будет счастье

<input type=text id="descript1" name="descript1" onchange="Onchang()">

function Onchang() {
$("#html5_uploader").pluploadQueue({
 // General settings
 runtimes : 'html5',
 url : 'upload.php',
 max_file_size : '10mb',
 chunk_size : '1mb',
 unique_names : true,
 multipart: true,
 multipart_params: {"description1": $("select[name=descript1]").val()},
 filters : [{title : "Image files", extensions : "jpg,gif,png"},],
 });

 });
}

neon_tmn 22.08.2012 11:49

Deff, не совсем понял. мне получается oninput уже и не нужно?

и по поводу функции function Onchange() {
Она на изменение чего будет реагировать?

Deff 22.08.2012 11:49

neon_tmn,
На изменение в поле input *Поправил

neon_tmn 22.08.2012 12:18

Deff, теперь понял. попробу минут через 30. Отпишусь сразу сюда.

neon_tmn 22.08.2012 12:55

Deff,
Теперь так интересно работает )))
Открываю страницу в браузере. у меня только мой input, хотя теперь уже сделал select. Как только я в селекте выбираю что-либо, у меня только тогда на экране появляется форма выбора и загрузки изображений :) В принципе это ничего страшно. пусть будет так. Главное что работает. Да и в принципе отвечает моим требованиям, добавлять только в том случае, если будет что-то выбрано.
Спасибо большое! Я на этом много времени убил безрезультатно. Вы мне очень помогли.

Deff 22.08.2012 12:58

neon_tmn,
Ну в принципе - обычно есть какая то кнопка - по ней(событие клика) и грузим => http://uploads.ru/

neon_tmn 22.08.2012 13:04

Deff,
Она есть. суть такая. есть форма загрузчика, можно выбрать файлы и нажать на загрузку. Но мне нужно кроме этого, чтобы до загрузке посетитель мог из select выбрать нужные ему категории. Читал в доках к prupload, от туда я была взята эта строка multipart_params: {"description1": $("select[name=descript1]").val()},
К тому же я взял example и в нем делал, принципиально не менял ничего, поэтому странно, что у меня эта проблема вообще имела место быть. Теперь все работает, именно так как мне нужно. Спасибо большое!

Deff 22.08.2012 13:17

neon_tmn,
собственно мну бы сделал так:
- Загружаем как и первоначально;
ставим свой селект на страницу сразу, реальную кнопку отправки скрываем css;
на её место ставим свою, такую же по виду;
По клику на неё проверяем cелект(можно выставить типовое значение по умолчанию, а можно пустышку), если есть пустышка - выдаём алерт с уведомлением о надобности выбора(хотя имхо дефолтное общеупотребимое в начале селекта - лучше);
При правильной установке селекта кликаем программно по реальной скрытой кнопке отправки.

neon_tmn 22.08.2012 14:19

Deff, не плохой вариант в принципе можно так реализовать.


Часовой пояс GMT +3, время: 11:23.