0

ホテルチェーンのリストを表示するダイアログボックスを作成しています。ダイアログボックスが正常に作成されています

<div id="HotelDialog" class="popup ui-dialog-content ui-widget-content">
 <div class="popup-hotel">
  <div class="checkbox">
   <input id="ChainBR" type="checkbox" name="HotelChainBR" value="BR" checked="checked" onclick="filterChain();">
   <label for="ChainBR">BR Hotel</label>
  </div>
  <div class="checkbox">
   <input id="ChainBW" type="checkbox" name="HotelChainBW" value="BW" checked="checked" onclick="filterChain();">
   <label for="ChainBW">BW Hotel</label>
  </div>
  <div class="checkbox">
   <input id="ChainCI" type="checkbox" name="HotelChainCI" value="CI" checked="checked" onclick="filterChain();">
   <label for="ChainCI">CI Hotel</label>
  </div>
 </div>
</div>

私の最終的な目標は、ユーザーが各ホテルをクリックし、チェックボックスをオフにすると、チェックボックスの値と等しいデータチェーン値を持つdivが表示されなくなることです。チェックボックスをオン/オフするたびにチェックボックスの値をコンソールに出力しようとしていますが、毎回BRしか出力されません。セレクターステートメントで何が間違っていますか?

<script type="application/javascript">
var hotelchains = [['BR'],['BW'],['CI']]; 

function filterChain() {
 for (loopcnt = 0; loopcnt <= (hotelchains.length-1); loopcnt++) {
  var singlechain = $('input[name^="HotelChain"]').val();
  console.log(singlechain);
 };
};
4

2 に答える 2

3

これvalは、最初に選択された要素の値のみを返し、各反復で同じ要素を選択しているためです。eqまたはeachメソッドを使用できます。

$('input[name^="HotelChain"]').each(function(){
    var val = this.value;
    console.log(val)
})

また:

var hotelchains = ['BR','BW','CI']; 
var $input = $('input[name^="HotelChain"]');

function filterChain() {
   for (var i = 0; i < hotelchains.length ; i++) {
      var singlechain = $input.filter('[name="HotelChain'+hotelchains[i]+'"]').val();
      console.log(singlechain);
   };
};
于 2012-10-03T16:39:49.900 に答える
1
$('input[name^="HotelChain"]').val();

これは、セレクターによって検出された最初の値のみを出力します。

それがあなたがいつもBRを見る理由です

また、配列を確認してください..次のようになります

var hotelchains = ['BR','BW','CI'];

これを試して

var hotelchains = ['BR','BW','CI']; 

function filterChain() {
 for (loopcnt = 0; loopcnt <= (hotelchains.length-1); loopcnt++) {
  var singlechain = $('input[name="HotelChain' + hotelchains[loopcnt] + '"]').val();
  console.log(singlechain);
 };​
于 2012-10-03T16:38:11.437 に答える