質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

2回答

1871閲覧

要素の配列 キー取得

sea1kiki1

総合スコア14

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/06/27 16:59

編集2017/06/28 15:27
<form method="post"> <input type="text" name="fs[]" id="fs" autocomplete=on list="fruits"> //ただし、このタグは複数(いくつ存在するかは動的に変わる) <input type="submit" value="送信"> </form>
<datalist id="fruits"> <option value="みかん"> <option value="リンゴ"> <option value="ばなな"> <option value="いちご"> </datalist>

このdatalistのもとになるデータは
array( 1=>"みかん",
2=>"リンゴ",
3=>"ばなな",
4=>"いちご")
とします。

やりたいことは、送信ボタンをクリックしたときに、inputタグの値およびdatalistのもとになる配列キー(1,2,3,4 のいずれか)を取得したい。

いずれかのinputタグで、たとえば、'みかん' を選択したとき、配列キーの1
を取得する、ということをしたいです。

予想結果

<input type="text" name="fs[]" id="fs" autocomplete=on list="fruits"> // リンゴ を選択 <input type="hidden" name="fs_key[]" id="fs" value="2"> // 選択後 key 2 がセットされる <input type="text" name="fs[]" id="fs" autocomplete=on list="fruits"> // みかん を選択 <input type="hidden" name="fs_key[]" id="fs" value="1"> // 選択後 key 1 がセットされる

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2017/06/27 17:26

質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
m.ts10806

2017/06/27 23:59

javascriptのタグがついていますが、何か試されたり、調べたことはありますか?「やってみたこと」「試してみたこと」追記をお願いします。
guest

回答2

0

datalist自体に1,2,3,4に当たるものが埋め込まれていないので
そのデータを抜き出すことは難しいと思います。
逆にもとになるデータがあるのですから、それを表示するだけではないでしょうか?

投稿2017/06/28 00:51

yambejp

総合スコア114769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sea1kiki1

2017/06/28 15:16

ありがとうございます
guest

0

どういうデータがほしいのかわかりませんが、それぞれ配列にするとこんな感じでしょうか

JavaScript

1 var fss = Array.from(document.getElementsByName('fs[]')); 2 var options = Array.from(document.getElementById('fruits').options); 3 var sourceValues = fss.map(a => a.value); 4 var convValues = fss.map(a => { 5 var index = options.findIndex(b => b.value === a.value); 6 return index < 0 ? a.value : (index + 1).toString(); 7 }); 8 9 console.log(sourceValues); // ["みかん", "リンゴ"] 10 console.log(convValues); // ["1", "2"]

投稿2017/06/28 08:37

x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sea1kiki1

2017/06/28 15:16

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問