Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как сделать из строк textarea выпадающее меню.
 
 автор: Temnovit   (06.06.2007 в 12:00)   письмо автору
 
 

У меня есть <textarea> в которой, в столбик записаны какие-то данные. Моя задача - перенести эти данные в <select> по одной строке на пункт.

<textarea onBlur="" name="text1">
Первый пункт
Вторй пункт
Третий пункт и т.д.
</textarea>

<select name="list1">
</select>

Надо чтобы в onBlur="" событии все содержимое <textarea> переноссилось в <select > по пунктам, тоесть в данном случае было бы три пункта
Первый пункт
Вторй пункт
Третий пункт и т.д.

Самая большая проблема - разбить строку из <textarea> на части. Как я понимаю, в JavaScript такой халявы как explode(), в РНР, не будет...

Помогите пожалуйста.

   
 
 автор: CNT   (06.06.2007 в 12:26)   письмо автору
 
   для: Temnovit   (06.06.2007 в 12:00)
 

Это не проблема :-)
в JScript'e есть метод string.split (pattern), аналогичный существующему методу split (pattern, string) в PHP.
"Строки" в <textarea> разделены (в Windows) двумя последовательными символами: возврат каретки и перевод строки, т.е. pattern в вашем случае будет равен \r\n, ну а string - это object_textarea.value. На выходе получите нужный вам массив.

Единственная возможная проблема - если в <textarea> последняя введенная строка будет пустой, то и последний элемент массива также будет пустым. Можно, конечно, предварительно обработать значение строки object_textarea.value, но методов типа trim () в JScript'e нет.
Поэтому легче получить массив, проверить последний его элемент на пустоту, в случае пустоты удалить этот элемент методом pop ().

UPLODE: для вашего случая

<form name="myForm"...>
...
<textarea onBlur="myFunc ()" name="text1">
Первый пункт
Вторй пункт
Третий пункт и т.д.
</textarea>

<select name="list1">
</select>
...
</form>
<script>
function myFunc ()
{
var myArr = document.forms.myForm.text1.value.split ('\r\n');
if (!myArr [myArr.length - 1]) myArr.pop ();
var myOpt = document.createElement ('OPTION');
for (var j = 0; j < myArr.length; j++)
   {
   var t = myOpt.cloneNode (0);
   t.text = myArr [j];
   document.forms.myForm.list1.options.add (t);
   }
}
</script>
 

   
 
 автор: Temnovit   (06.06.2007 в 12:46)   письмо автору
 
   для: CNT   (06.06.2007 в 12:26)
 

CNT, огромное спасибо - исчерпывающий ответ. Благодарю за то, что потратили на меня свое время :)

   
 
 автор: coloboc66   (06.06.2007 в 12:26)   письмо автору
 
   для: Temnovit   (06.06.2007 в 12:00)
 

Можно разбить на строки с помощью регулярных выражений. Я как-то задавал здесь похожий вопрос, и получил реальный ответ.

   
 
 автор: Temnovit   (06.06.2007 в 12:47)   письмо автору
 
   для: coloboc66   (06.06.2007 в 12:26)
 

Я про это слышал, но, как оказалось, в этом нет необходимости.

   
 
 автор: Lelik   (06.06.2007 в 12:26)   письмо автору
 
   для: Temnovit   (06.06.2007 в 12:00)
 


<script>
aaa = "asdasda;afasfasfasf;afafafaf;";
vvv = aaa.split(';');
</script>

   
 
 автор: Temnovit   (06.06.2007 в 12:38)   письмо автору
 
   для: Lelik   (06.06.2007 в 12:26)
 

Большое спасибо! Жаль что по JS, в Интернете, нет такого толкового мануала как по РНР.

   
 
 автор: CNT   (06.06.2007 в 12:48)   письмо автору
 
   для: Temnovit   (06.06.2007 в 12:38)
 

1. Ну почему же нет мануала?
Качайте
мануал от Билла Гейтса (на самом msdn теперь эту штуку закачать можно только после проверки подлинности Windows)

2. Решение вашей задачи я добавил выше

   
 
 автор: Temnovit   (06.06.2007 в 12:59)   письмо автору
 
   для: CNT   (06.06.2007 в 12:48)
 

Туманный манул... В стиле микрософт вобщем то....
В скрипте нехватает одной строки по отчищению селекта в начале функции. В мануале так и не нашел как это делается...

   
 
 автор: CNT   (06.06.2007 в 13:25)   письмо автору
 
   для: Temnovit   (06.06.2007 в 12:59)
 

1. мануал, кстати, вполне себе нормальный.
Но он именно по JScript и VBScript
А эти языки - всего лишь инструмент для работы с DOM документов
А DOM - это:
объекты (HTML-элементы, окна, документы...), каждый из которых имеет кучу своих персональных свойств, которые изначально имеют свои персональные значения по умолчанию (каждое свойство каждого объекта) и которые можно менять по неким событиям (движения и клики мыши, изменение размеров окна, нажатие клавиш и прочее) с помощью методов. Кроме того, для удобства работы программистов объекты объединяются в коллекции...
Так вот - всего этого (объектов, свойств, событий, методов и коллекций) в мануале действительно нет :-)
Это есть в другом мануале, который вероятнее всего имеется в вашем компьютере под именем Htmlref.chm (должен быть где-то в папке Microsoft Office, ибо прилагается к справочной системе Word'a и Exel'я)

2. перед имещимся циклом в вышеприведенном коде добавьте еще один:
for (var obj = document.forms.myForm.list1, j = obj.options.length - 1; j >= 0; j--) obj.options.remove (j)

   
 
 автор: Temnovit   (06.06.2007 в 13:34)   письмо автору
 
   для: CNT   (06.06.2007 в 13:25)
 

Теперь все как часы :)

>мануал, кстати, вполне себе нормальный.
>Но он именно по JScript и VBScript
>А эти языки - всего лишь инструмент для работы с DOM документов

Да - это так. Но у меня вся то и проблема в объектах и их свойствах. Это просто вещи которые надо знать. С логическим пониманием языка гораздо проще.

   
 
 автор: Lelik   (06.06.2007 в 13:19)   письмо автору
 
   для: Temnovit   (06.06.2007 в 12:38)
 

мануал

   
 
 автор: Temnovit   (06.06.2007 в 13:23)   письмо автору
 
   для: Lelik   (06.06.2007 в 13:19)
 

Вот этот просто супер!

   
 
 автор: coloboc66   (06.06.2007 в 13:59)   письмо автору
 
   для: Temnovit   (06.06.2007 в 13:23)
 

А что такое вообще "мануал"? В моём понимании учебник. А ссылку Лёлика я назвал бы справочником. Очень качественным, кстати, справочником.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования