Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.12.2022, 19:07
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

Как при загрузке страницы записать в textarea данные соответствующие selected из поля
При загрузке в форму данных с сервера есть поля select и textarea. В этих полях есть данные. Т.е. у каждого option есть набор данных для textarea. Сразу загрузить эти данные в textarea не получается, т.к. на момент загрузки формы невозможно определить, что будет в selected option в поле select. При этом загрузить все возможные варианты option возможно.

Вопрос: как после загрузки всех данных в форму вставлять в textarea то, что соответствует selected option и менять при необходимости выбора другого элемента option данные в textarea?

Надеюсь, что всё понятно изложил, если нет - спрашивайте. Всем заранее спасибо за участие!
Ответить с цитированием
  #2 (permalink)  
Старый 05.12.2022, 19:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

javascript_pupil,
непонятно в чём проблема?
Ответить с цитированием
  #3 (permalink)  
Старый 05.12.2022, 20:06
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,704

Что грузится то? Страница с сервера?
Сообщение от javascript_pupil
т.к. на момент загрузки формы невозможно определить, что будет в selected option в поле select.
Почему? Сервер, который готовит страницу этого не знает?

Ну а так, после загрузки страницы, определяете какая option selected, берете связанные с ней данные и переносите в textarea
Ответить с цитированием
  #4 (permalink)  
Старый 05.12.2022, 20:21
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

Сообщение от рони
в чём проблема?
В недостаточных знаниях Javascript. Извините, если не оправдал ожиданий.

Сообщение от voraa
Сервер, который готовит страницу этого не знает?
Конечно знает. Но система построена таким образом, что когда данные загружаются в textarea, они не знают, что будет загружено в select.

Сообщение от voraa
определяете какая option selected, берете связанные с ней данные и переносите в textarea
В этом и есть мой вопрос. Анекдот помните про амерский авианосец и нашу подводную лодку? Тут примерно то же самое. Но я учусь...
Ответить с цитированием
  #5 (permalink)  
Старый 05.12.2022, 20:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

javascript_pupil,
без конкретики, можно только гадать, с чем у вас проблема.
Ответить с цитированием
  #6 (permalink)  
Старый 05.12.2022, 21:21
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

Сообщение от рони
без конкретики, можно только гадать
Ну как-то так, наверное, сейчас это выглядит:
<select name="name">
<option value="one">
<option value="two" selected>
<option value="three">
</select>

<textarea name="results">
one
11111
two
22222
three
33333
</textarea>


а нужно, чтобы было так:
<textarea name="results">
22222
</textarea>


и при смене selected textarea получала бы значение "11111" или "33333".

Последний раз редактировалось javascript_pupil, 05.12.2022 в 21:23.
Ответить с цитированием
  #7 (permalink)  
Старый 05.12.2022, 23:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

javascript_pupil,
<!DOCTYPE html>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <script>
        document.addEventListener("DOMContentLoaded", function() {
            let select = document.querySelector("[name='name']"),
                textarea = document.querySelector("[name='results']"),
                obj = {
                    one: 11111,
                    two: 22222,
                    three: 33333
                };
            const load = () => textarea.value = obj[select.value];
            select.addEventListener("change", load);
            load();
        })
    </script>
</head>

<body>
    <select name="name">
<option value="one">one</option>
<option value="two" selected>two</option>
<option value="three">three</option>
</select>
    <textarea name="results">
one
11111
two
22222
three
33333
</textarea>
</body>

</html>
Ответить с цитированием
  #8 (permalink)  
Старый 06.12.2022, 10:05
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,704

Ну если с сервера приходит так заполненная textarea, то этот obj еще надо получить из textarea
Тогда код будет немного другой
<!DOCTYPE html>
<html>
 
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <script>
        document.addEventListener("DOMContentLoaded", function() {
            const select = document.querySelector("[name='name']");
            const textarea = document.querySelector("[name='results']");
            const strings = textarea.value.split('\n');
            const obj = {};
            for (let i = 0; i<strings.length; i+=2) {
				if (!strings[i]) continue;
				obj[strings[i]] = strings[i+1]
			}
				
            const load = () => textarea.value = obj[select.value];
            select.addEventListener("change", load);
            load();
        })
    </script>
</head>
 
<body>
    <select name="name">
<option value="one">one</option>
<option value="two" selected>two</option>
<option value="three">three</option>
</select>
    <textarea name="results">
one
11111
two
22222
three
33333
</textarea>
</body>
 
</html>
Ответить с цитированием
  #9 (permalink)  
Старый 06.12.2022, 11:23
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

рони, спасибо!

С сервера она должна приходить пустая, а заполнятся уже по мере выбора select option. В идеале, если select option только одна, данные сразу можно пускать в textarea, тем более, что select option в случае единственной записи сразу будет в положении selected.

Тут другой косяк вылез. Я, чтобы упростить описание задачи написал переменные в одну строку, а в реальности они выглядят так:

obj = {

brands: "0
0",
chat: "28
50
38
84"
};

И если с переменными из одной строкой у меня всё работает, то конструкция выше, где у переменных есть переносы строк - нет. Попробовал "завернуть" в кавычки (как на примере), но тоже не помогает.

voraa, спасибо, Ваш вариант сейчас тоже буду пробовать. Дело в том, что данные для textarea я могу вытащить только когда обрабатывается именно поле textarea, программа в этот момент не знает что за данные ранее были внесены в select. И менять движок - не вариант, иначе я бы их сразу после получения значений select option грузил бы соответствующие данные в textarea. Но textarea "знает" какие option могут быть у select.
Ответить с цитированием
  #10 (permalink)  
Старый 06.12.2022, 12:15
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,704

Такого объекта, где строка разбита и продолжается на другую строку просто быть не может. По синтаксису js не пройдет с такими(") кавычками. Нужны другие (`).

Сообщение от javascript_pupil
Но textarea "знает" какие option могут быть у select.
Как она это знает? Куда записаны эти данные?

Сообщение от javascript_pupil
а в реальности они выглядят так:
Так они с сервера куда приходят? В textarea или в какой-то obj?

Ну проще ведь написать сразу, что нужно, а не выдавливать условия по капле.

Последний раз редактировалось voraa, 06.12.2022 в 12:21.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тег video не срабатывает при первой загрузке страницы Igorsrt Элементы интерфейса 2 22.09.2018 11:27
Как компилировать sass в css при перезагрузки страницы? Armen (X)HTML/CSS 0 21.09.2014 16:21
Установить selected в динамических списках при загрузке страницы FlintOFF jQuery 2 12.03.2010 10:42
Как разделять страницы при выводе отчета ilshat Events/DOM/Window 7 10.12.2009 10:24
Срабатывание скрипта при загрузке страницы bormax Общие вопросы Javascript 3 03.04.2008 09:57