2012-05-07 4 views
1

をいじる:チェック複数のHTMLチェックボックスを - 少し私は、同じ名前を持ついくつかのチェックボックスがあり、2の累乗である値

<input type=checkbox name=mycheckbox value=1>Some text 1 
<input type=checkbox name=mycheckbox value=2>Some text 2 
<input type=checkbox name=mycheckbox value=4>Some text 3 
<input type=checkbox name=mycheckbox value=8>Some text 4 
<input type=checkbox name=mycheckbox value=16>Some text 5 
<input type=checkbox name=mycheckbox value=32>Some text 6 

データベースに格納されている値は、ビット単位ORです一部のテキスト3と一部のテキスト6がチェックされている場合、データベースの値は32 | 4 = 36になります。

この値は、Ajax呼び出しを使用してデータベースからロードします。 jQueryを使用して番号に基づいて適切なチェックボックスをチェックする最も簡単で最善の方法は何でしょうか?

私は、スクリプトを実行するより慣れているし、それが好きなアプローチになります。

for (i = 1; i <= 32; i*=2) 
    if ((ajaxValue & i) == i) 

など

をしかし、理想的にはjQueryがはるかに簡単にそれを行うには、値でチェックボックスをチェックすることができます。

+0

CKを - はい、私は基本的な指数の数学の認識しています。 Text Value 1などは、ビジネス機密の実際の値の単なる置換テキストでした。私は2^1 = 1の値ではないと言っていました。それを明確にするために編集しました。 –

答えて

0
$(function() { 
    $('input[name=mycheckbox]').each(function() { 
    // Your code there like if ($(this).val() .... 
    if ($(this).val() == someValue) $(this).attr('checked', 'checked'); // Example of make the checkbox checked 
    }); 
}); 
+0

ありがとうマリアン、私はこれを使用します。等号は、if(($(this).val()&someValue)> 0)またはそれに類するものでなければならないことに注意してください。 –

2

YOUR_VALUEはデータベースからのものです。

$('input[name=mycheckbox][value="'+ YOUR_VALUE +'"]').prop('checked', true); 

あなたの更新の質問

によれば、これを試してみてください。

var x = []; 

$('input[name=mycheckbox]').each(function() { 
    x.push(this.value); 
}); 
var len = x.length, 
    target = 36; // this is the value you get from ajax (integer) 

for (i = 0; i <= len - 1; i++) { 
    for (j = len - 1; j > i; j--) { 
     var value = x[j + i] | x[i]; 
     if (value === target) { 
      $('input[name=mycheckbox][value="' + x[i] + '"], 
       input[name=mycheckbox][value="' + x[j + i] + '"]') 
      .prop('checked', true); 
     } 
    } 
} 

DEMO

+0

'check'要素のプロパティであるため、' checked'プロパティを設定するために 'attr'より' prop'が推奨されています。 – ShankarSangoli

+0

@ShankarSangoli長い習慣は、今すぐフォームを変更します。ありがとう。 – thecodeparadox

+0

ありがとうございますが、問題は解決しません。データベースから来る値はビット単位の論理和の値であり、必ずしもいずれのチェックボックスとも一致しません。この例のように、データベース値は36ですが、チェックボックスには値36がありません。値36は値4と値32をチェックする必要があることを意味します。 –

関連する問題