実現したい事
絞り込みの処理で、inputの値をつなげてappendしたい。
【パターン】
1:カテゴリーに「women」「men」「kids」のボタンがあり、値を1つだけとりだす。
2:シーズンに「春夏」「秋冬」「全て」のボタンがあり、シーズンをクリックするとカテゴリーで選択した値に
value="women,春夏"という2つカンマでつなげたい。
3:シーズンの全ての値は空にするので、全てをおしたらvalue=""にする。
現状、カテゴリーの値は1つだけ取り出すことができましたが、
2,3のパターンに難航しており、
カテゴリーを選択してからシーズンを選択するとvalueの値が、「WOMEN,」となり、再度シーズンをクリックすると「undefined,春夏」に
なります。
空やundefinedの値が入らないようにするにはどうのような方法がありますでしょうか。
ご教示いただけると幸いです。
HTML
1 <div class="menu-search"> 2 3 <!-- ▼▼ カテゴリタブ ▼▼ --> 4 <span class="menu-list-name">カテゴリー</span> 5 <div class="type-tab ta-tag"> 6 <ul> 7 <li data-tag="WOMEN">WOMEN</li> 8 <li data-tag="MEN">MEN</li> 9 <li data-tag="KIDS">KIDS</li> 10 </ul> 11 </div> 12 <!-- ▼▼ シーズン ▼▼ --> 13 <div class="menu-list menu-list_st"> 14 <div class="menu-list-filter"> 15 <span class="menu-list-name">シーズン</span> 16 <ul class="season-tag ta-tag"> 17 <li data-season-tag="春夏"><span>春夏</span></li> 18 <li data-season-tag="秋冬"><span>秋冬</span></li> 19 <li data-season-tag=""><span>すべて</span></li> 20 </ul> 21 </div> 22 </div> 23 <input type="hidden" name="ta" value="WOMEN"> 24 25 </div> 26
javascript
1 <script type="text/javascript"> 2 $(function () { 3 var $category = $('.type-tab li'); 4 var $season = $('.season-tag li'); 5 var $form = $('.menu-search'); 6 var taValue = []; 7 8 // WOMEN,MEN,KIDSの値を配列に格納 9 var category = $category.map(function (){ 10 return $(this).data('tag'); 11 }).toArray(); 12 console.log(category); 13 14 // 春夏,秋冬の値を配列に格納 15 var season = $season.map(function (){ 16 return $(this).data('season-tag'); 17 }).toArray(); 18 console.log(season); 19 20 $('.ta-tag li').on('click', function(){ 21 var categoryTag = $(this).data('tag'); 22 var seasonTag = $(this).data('season-tag'); 23 var inputValue = $('input[name="ta"]').val(); 24 25 26 var categorySelect = category.filter(function(a){ 27 return a === categoryTag; 28 }); 29 var seasonSelect = season.filter(function(a){ 30 return a === seasonTag; 31 }); 32 33 if(categorySelect){ 34 $form.find('input[name="ta"]').remove(); 35 $form.append('<input type="hidden" name="ta" value="' + categorySelect + '" />'); 36 } 37 38 // シーズンのとき 39 if(inputValue != seasonTag){ 40 $season.on('click', function(){ 41 $form.find('input[name="ta"]').remove(); 42 $form.append('<input type="hidden" name="ta" value="' + categoryTag + ',' + seasonSelect + '" />'); 43 }); 44 } 45 }); 46 47 }); 48 </script>
回答2件
あなたの回答
tips
プレビュー