前提・実現したいこと
htmlのformで1つのradioボタンから2つの値を取得したいです。
該当のソースコード
html
1 <form id="form" name="search" action=""> 2 <div class="form-list"> 3 <p>形</p> 4 <input type="radio" id="type01" name="type" value="◯"><label for="type01">◯か□</label> 5 <input type="radio" id="type02" name="type" value="△"><label for="type02">△</label> 6 </div> 7 <div class="form-list"> 8 <p>色</p> 9 <input type="radio" id="color01" name="color" value="青"><label for="color01">赤以外</label> 10 <input type="radio" id="color02" name="color" value="赤"><label for="color02">赤</label> 11 </div> 12 <button class="submit" value="">条件で絞り込む</button> 13 </form>
js
1$(function () { 2 $.ajax({ 3 url: 'test.json', 4 type: "POST", 5 dataType: "json", 6 success: function(data){ 7 var dataArray = data.test; 8 $('button').on('click',function(event){ 9 event.preventDefault(); 10 11 var query = $('input:checked').map(function(){ 12 var element = ($(this).attr('name')).replace('[]',''); 13 var obj = {}; 14 obj[element] = $(this).val(); 15 return obj; 16 }).get(); 17 if(query == ''){ 18 query = outputResults(dataArray); 19 } else { 20 var _query = {}; 21 for(var i = 0; i <= 4; i++) { 22 for(var key in query[i]) { 23 _query[key] = query[i][key]; 24 } 25 } 26 query = _query; 27 } 28 var results = _.where(dataArray, query); 29 outputResults(results); 30 console.log(results); 31 32 var i = $(".button").index(this) 33 var p = $(".result").eq(i).offset().top; 34 $('html,body').animate({ scrollTop: p }, 'fast'); 35 return false; 36 }); 37 38 function outputResults(results){ 39 var html = ''; 40 41 jQuery.each(results, function() {
json
1{ 2 "test":[ 3 { 4 "type":"◯", 5 "color":"赤" 6 }, 7 { 8 "type":"◯", 9 "color":"青" 10 }, 11 { 12 "type":"□", 13 "color":"青" 14 }, 15 { 16 "type":"□", 17 "color":"緑" 18 }, 19 { 20 "type":"△", 21 "color":"緑" 22 } 23 ] 24}
上記でformからの値を取ってきてjsonの対象のキーで値が同じであればそれを表示それ以外は非表示と言うようにしています。
javascriptのライブラリ「Underscore.js」を使用しています。
試したこと
調べて見て
html
1<input type="radio" id="type01" name="type" value="◯ □"><label for="type01">◯か□</label> 2<input type="radio" id="type01" name="type" value="◯,□"><label for="type01">◯か□</label>
など試して見ましたがうまく取得できませんでした。
値が1つの場合は正常に動いています。
後々は取得できた後にさらにソートさせる予定です。
追記
jsonの中などを追記しました。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/25 11:22
2018/07/25 11:23
2018/07/25 11:24
2018/07/25 11:29