забрать значение 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 скрипта, но толку нет. все тот же результат. Подскажите, в какую сторону копать? или может у меня явно допущена ошибка, которую я не вижу? |
Попробовал так:
<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", не зависимо от того, что я выбираю. |
можно посмотреть на страницу с такими чудесами?
|
Цитата:
Вариант тестирования данной ситуации - *Если Пустота - то вы считали до изменения поля 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,
Тут подстраховка со второй переменной |
LittlePony, делаю на локальном апаче, поэтому наверное нигде.
Deff, открываю страницу в браузере. передо мной мультизагрузчик и мой type=text. Событие мультизагрузчика обрабатывается в файле upload.php. Я в input ввожу значение, потом нажимаю на ссылку, по которой происходит обработка в upload.php. Поэтому раньше передаться никак не может. |
neon_tmn,
Поставьте мой тест <script type="text/javascript"> var changeValue='';</script> <input type=text id="descript1" name="descript1" oninput="changeValue=this.value"> - передавайте переменную changeValue |
В самом простом виде так:
<!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> |
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 возвращает пустоту |
neon_tmn,
Пробуйте заменить эту строку multipart_params: {"description1": $("select[name=descript1]").val()}, на на multipart_params: {"description1": $("select[name='descript1']").val()}, Неясно наличие запятой на конце |
попробовал простейший пример:
$(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()}, один раз попадает начальное значение и на этом все. как бы передать в эту строку не начальное значение а текущее. |
Deff, попробовал поставить одинарные кавычки, как вы советовали. все равно ставит только начальное значение.
|
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"},], }); }); } |
Deff, не совсем понял. мне получается oninput уже и не нужно?
и по поводу функции function Onchange() { Она на изменение чего будет реагировать? |
neon_tmn,
На изменение в поле input *Поправил |
Deff, теперь понял. попробу минут через 30. Отпишусь сразу сюда.
|
Deff,
Теперь так интересно работает ))) Открываю страницу в браузере. у меня только мой input, хотя теперь уже сделал select. Как только я в селекте выбираю что-либо, у меня только тогда на экране появляется форма выбора и загрузки изображений :) В принципе это ничего страшно. пусть будет так. Главное что работает. Да и в принципе отвечает моим требованиям, добавлять только в том случае, если будет что-то выбрано. Спасибо большое! Я на этом много времени убил безрезультатно. Вы мне очень помогли. |
neon_tmn,
Ну в принципе - обычно есть какая то кнопка - по ней(событие клика) и грузим => http://uploads.ru/ |
Deff,
Она есть. суть такая. есть форма загрузчика, можно выбрать файлы и нажать на загрузку. Но мне нужно кроме этого, чтобы до загрузке посетитель мог из select выбрать нужные ему категории. Читал в доках к prupload, от туда я была взята эта строка multipart_params: {"description1": $("select[name=descript1]").val()}, К тому же я взял example и в нем делал, принципиально не менял ничего, поэтому странно, что у меня эта проблема вообще имела место быть. Теперь все работает, именно так как мне нужно. Спасибо большое! |
neon_tmn,
собственно мну бы сделал так: - Загружаем как и первоначально; ставим свой селект на страницу сразу, реальную кнопку отправки скрываем css; на её место ставим свою, такую же по виду; По клику на неё проверяем cелект(можно выставить типовое значение по умолчанию, а можно пустышку), если есть пустышка - выдаём алерт с уведомлением о надобности выбора(хотя имхо дефолтное общеупотребимое в начале селекта - лучше); При правильной установке селекта кликаем программно по реальной скрытой кнопке отправки. |
Deff, не плохой вариант в принципе можно так реализовать.
|
Часовой пояс GMT +3, время: 11:23. |