|
|
|
| У меня есть <textarea> в которой, в столбик записаны какие-то данные. Моя задача - перенести эти данные в <select> по одной строке на пункт.
<textarea onBlur="" name="text1">
Первый пункт
Вторй пункт
Третий пункт и т.д.
</textarea>
<select name="list1">
</select>
|
Надо чтобы в onBlur="" событии все содержимое <textarea> переноссилось в <select > по пунктам, тоесть в данном случае было бы три пункта
Первый пункт
Вторй пункт
Третий пункт и т.д.
Самая большая проблема - разбить строку из <textarea> на части. Как я понимаю, в JavaScript такой халявы как explode(), в РНР, не будет...
Помогите пожалуйста. | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|
|
|
|
|
для: CNT
(06.06.2007 в 12:26)
| | CNT, огромное спасибо - исчерпывающий ответ. Благодарю за то, что потратили на меня свое время :) | |
|
|
|
|
|
|
|
для: Temnovit
(06.06.2007 в 12:00)
| | Можно разбить на строки с помощью регулярных выражений. Я как-то задавал здесь похожий вопрос, и получил реальный ответ. | |
|
|
|
|
|
|
|
для: coloboc66
(06.06.2007 в 12:26)
| | Я про это слышал, но, как оказалось, в этом нет необходимости. | |
|
|
|
|
|
|
|
для: Temnovit
(06.06.2007 в 12:00)
| |
<script>
aaa = "asdasda;afasfasfasf;afafafaf;";
vvv = aaa.split(';');
</script>
|
| |
|
|
|
|
|
|
|
для: Lelik
(06.06.2007 в 12:26)
| | Большое спасибо! Жаль что по JS, в Интернете, нет такого толкового мануала как по РНР. | |
|
|
|
|
|
|
|
для: Temnovit
(06.06.2007 в 12:38)
| | 1. Ну почему же нет мануала?
Качайте
мануал от Билла Гейтса (на самом msdn теперь эту штуку закачать можно только после проверки подлинности Windows)
2. Решение вашей задачи я добавил выше | |
|
|
|
|
|
|
|
для: CNT
(06.06.2007 в 12:48)
| | Туманный манул... В стиле микрософт вобщем то....
В скрипте нехватает одной строки по отчищению селекта в начале функции. В мануале так и не нашел как это делается... | |
|
|
|
|
|
|
|
для: 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)
|
| |
|
|
|
|
|
|
|
для: CNT
(06.06.2007 в 13:25)
| | Теперь все как часы :)
>мануал, кстати, вполне себе нормальный.
>Но он именно по JScript и VBScript
>А эти языки - всего лишь инструмент для работы с DOM документов
Да - это так. Но у меня вся то и проблема в объектах и их свойствах. Это просто вещи которые надо знать. С логическим пониманием языка гораздо проще. | |
|
|
|
|
|
|
|
для: Temnovit
(06.06.2007 в 12:38)
| | мануал | |
|
|
|
|
|
|
|
для: Lelik
(06.06.2007 в 13:19)
| | Вот этот просто супер! | |
|
|
|
|
|
|
|
для: Temnovit
(06.06.2007 в 13:23)
| | А что такое вообще "мануал"? В моём понимании учебник. А ссылку Лёлика я назвал бы справочником. Очень качественным, кстати, справочником. | |
|
|
|