Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.09.2021, 18:34
Аватар для wemon
Интересующийся
Отправить личное сообщение для wemon Посмотреть профиль Найти все сообщения от wemon
 
Регистрация: 25.04.2017
Сообщений: 29

Разные значения input value при выборе из select
Здравствуйте.
Подскажите пожалуйста как для:
<input type="text" name="price" value="" />

В value="" подставлять разные значения в зависимости от выбранного параметра select option ?
<select name="colour" required>
<option hidden value="">Выберите цвет</option>
<option value="Красный">Красный</option>
<option value="Бирюзовый">Бирюзовый</option>
<option value="Фиолетовый">Фиолетовый</option>
</select>

То есть при выборе цвета, к примеру для красного input value="20" а для фиолетового input value="70" и для бирюзового input value="40"

Подскажите пожалуйста как это реализовать ?
Ответить с цитированием
  #2 (permalink)  
Старый 12.09.2021, 19:38
Кандидат Javascript-наук
Отправить личное сообщение для od0201 Посмотреть профиль Найти все сообщения от od0201
 
Регистрация: 07.05.2020
Сообщений: 108

<body>
  <input type="text" name="price" value="" />
  <select name="colour" required>
    <option hidden value="">Выберите цвет</option>
    <option value="Красный">Красный</option>
    <option value="Бирюзовый">Бирюзовый</option>
    <option value="Фиолетовый">Фиолетовый</option>
  </select>
</body>
<script>
  const data={
    'Красный':20,
    'Бирюзовый':70,
    'Фиолетовый':40,
  }
  document.querySelector('select').addEventListener('change',e=>document.querySelector('input').value=data[e.target.value])
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 12.09.2021, 19:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109


<option value="20">Красный</option>
Ответить с цитированием
  #4 (permalink)  
Старый 12.09.2021, 20:04
Аватар для wemon
Интересующийся
Отправить личное сообщение для wemon Посмотреть профиль Найти все сообщения от wemon
 
Регистрация: 25.04.2017
Сообщений: 29

Сообщение от od0201
<script>
const data={
'Красный':20,
'Бирюзовый':70,
'Фиолетовый':40,
}
document.querySelector('select').addEventListener( 'change',e=>document.querySelector('input').value= data[e.target.value])
</script>
Спасибо за помощь. Все правильно. Но подскажите если у меня несколько других <input type="text" name="price" value="" /> и <input type="text" name="weight" value="" /> то он начинает добавлять значения не для того input. Как сделать так чтобы он работал только для input name="price" ?
Ответить с цитированием
  #5 (permalink)  
Старый 12.09.2021, 20:09
Аватар для wemon
Интересующийся
Отправить личное сообщение для wemon Посмотреть профиль Найти все сообщения от wemon
 
Регистрация: 25.04.2017
Сообщений: 29

Сообщение от рони
<option value="20">Красный</option>
Спасибо но это не то... он просто передаст значение цвета как 20. Нужно чтобы именно для <input type="text" name="price" value="" /> чтобы вывело значение.
Ответить с цитированием
  #6 (permalink)  
Старый 12.09.2021, 20:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от wemon
Спасибо но это не то...
зачем усложнять, и оберните код в блоки с классом смотреть что должно получиться тут https://javascript.ru/forum/misc/830...tml#post540185

читать про делегирование ...
Ответить с цитированием
  #7 (permalink)  
Старый 12.09.2021, 20:30
Аватар для wemon
Интересующийся
Отправить личное сообщение для wemon Посмотреть профиль Найти все сообщения от wemon
 
Регистрация: 25.04.2017
Сообщений: 29

Сообщение от рони
зачем усложнять, и оберните код в блоки с классом
<input type="text" name="weight" value="" />
<input type="text" name="price" value="" />
  <select name="colour" required>
    <option hidden value="">Выберите цвет</option>
    <option value="Красный">Красный</option>
    <option value="Бирюзовый">Бирюзовый</option>
    <option value="Фиолетовый">Фиолетовый</option>
 </select>

<script>
  const data={
    'Красный':20,
    'Бирюзовый':70,
    'Фиолетовый':40,
  }
  document.querySelector('select').addEventListener('change',e=>document.querySelector('input').value=data[e.target.value])
</script>


Как применить только для
<input type="text" name="price" value="" />
Ответить с цитированием
  #8 (permalink)  
Старый 12.09.2021, 21:02
Кандидат Javascript-наук
Отправить личное сообщение для od0201 Посмотреть профиль Найти все сообщения от od0201
 
Регистрация: 07.05.2020
Сообщений: 108

правильнее действовать в пределе блока чрезе родителей/детей, если нет, то привязываться не к name, а к id (или class)
<input type="text" id="price" value="" />
document.querySelector('select#price')
Также будет правильнее данные сразу задать в HTML, как указал рони, чтоб потом не "дублировать"
<option value="20">Красный</option>
<body>
  <div>
    <input type="text" name="price" value="" />
    <select name="colour" required>
      <option hidden value="">Выберите цвет</option>
      <option value="20">Красный</option>
      <option value="70">Бирюзовый</option>
      <option value="40">Фиолетовый</option>
    </select>
  </div>
  <div>
    <input type="text" name="price" value="" />
    <select name="colour" required>
      <option hidden value="">Выберите цвет</option>
      <option value="20">Красный</option>
      <option value="70">Бирюзовый</option>
      <option value="40">Фиолетовый</option>
    </select>
  </div>

</body>
<script>
  selects=document.querySelectorAll('select')
  selects.forEach(el => el.addEventListener('change', 
    e=>e.target.parentElement.querySelector('input').value=e.target.value)
  );
</script>
Ответить с цитированием
  #9 (permalink)  
Старый 12.09.2021, 21:06
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,744

<input id=weight type="text" name="weight" value="" />
<input id=price type="text" name="price" value="" />
  <select id=sel name="colour" required>
    <option hidden value="">Выберите цвет</option>
    <option value="20">Красный</option>
    <option value="70">Бирюзовый</option>
    <option value="40">Фиолетовый</option>
 </select>
 
<script>
  document.getElementById('sel').addEventListener('change',
    e => document.getElementById('price').value = e.target.value 
  )
</script>
Ответить с цитированием
  #10 (permalink)  
Старый 12.09.2021, 21:13
Аватар для wemon
Интересующийся
Отправить личное сообщение для wemon Посмотреть профиль Найти все сообщения от wemon
 
Регистрация: 25.04.2017
Сообщений: 29

Спасибо ВСЕМ за помощь. Очень помогли. Спасибо.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести значения value из select в input Jeick9 Events/DOM/Window 28 29.11.2017 08:57
Добавление элемента формы при выборе SELECT orangebox jQuery 5 11.01.2017 08:29
Запрос sql при выборе значения из списка maxis1523 Общие вопросы Javascript 4 22.05.2013 14:48
При добавлении DOCTYPE "плывут" размеры input type=text Demath (X)HTML/CSS 4 08.07.2012 19:27
при выборе в 1-ом select соот.-щая инф. отображается в другом select celencer Общие вопросы Javascript 1 24.05.2009 20:38