メールフォームで、「select」を選択したら、連動したテキストが「input」にテキスト入力されるフォームを作りたいのですが、一番簡単な方法を教えてください。

名前を選択したら、該当者のメールアドレスが表示されるといった単純な連動を想定しています。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2018/08/01 14:47:13
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント100pt

javascript でやるのが簡単だと思います。
select 要素の onchange イベントで、選択されている option の value に指定されているメールアドレスを、別の input 要素の value に設定します。
こんな感じ。

HTML

部署:
<select name="department">
  <option value=""></option>
  <option value="soumu@some.enterprise.com">総務</option>
  <option value="keiri@some.enterprise.com">経理</option>
  <option value="houmu@some.enterprise.com">法務</option>
</select>

<p>
メールアドレス:
<input name="mailaddress" size="50">

javascript

window.addEventListener("DOMContentLoaded", _ => {
  const sel = document.querySelector('[name="department"]');
  const add = document.querySelector('[name="mailaddress"]');
  sel.addEventListener("change", ev => {
    add.value = sel.selectedOptions[0].value;
  });
});


jsFiddle にも置いておきました。
https://jsfiddle.net/1aptznw5/




追記です。

この場合、部署とメールアドレスの値が同じになってしまうのですが、部署は選択内容にしつつ同じような挙動を得る事は可能でしょうか。

メールアドレスは、option の value ではなく、カスタムデータ属性に持つようにしてみました。

HTML

部署:
<select name="department">
  <option value=""></option>
  <option value="総務" data-mail="soumu@some.enterprise.com">総務</option>
  <option value="経理" data-mail="keiri@some.enterprise.com">経理</option>
  <option value="法務" data-mail="houmu@some.enterprise.com">法務</option>
</select>

<p>
メールアドレス:
<input name="mailaddress" size="50">

javascript

window.addEventListener("DOMContentLoaded", _ => {
  const sel = document.querySelector('[name="department"]');
  const add = document.querySelector('[name="mailaddress"]');
  sel.addEventListener("change", ev => {
    add.value = sel.selectedOptions[0].dataset.mail;
  });
});

jsFiddle の方も、追記の内容にしてます。
https://jsfiddle.net/1aptznw5/11/

他1件のコメントを見る
id:a-kuma3

この場合、部署とメールアドレスの値が同じになってしまうのですが、部署は選択内容にしつつ同じような挙動を得る事は可能でしょうか。

回答に追記しました。

2018/08/01 14:38:56
id:sunihate

完璧です。素晴らしいです。ありがとうございます!

2018/08/01 14:48:01

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません