2017-01-13 8 views
0

私はテーブルの2つの行を比較するソリューションを開発中です。最も基本的なテーブル構造を以下に例示する:jQueryは2つのみのチェックボックスを選択します

<table id="historyTable"> 
    <tr> 
    <td><input type="checkbox" id="row_0" /></td> 
    <td>same</td> 
    <td>r0c2</td> 
    <td>r0c3</td> 
    <td>r0c4</td> 
    <td>r0c5</td> 
    </tr> 
    <tr> 
    <td><input type="checkbox" id="row_1" /></td> 
     <td>same</td> 
     <td>same</td> 
     <td>r1c3-different</td> 
     <td>same</td> 
     <td>same</td> 
    </tr> 
    <tr> 
    <td><input type="checkbox" id="row_2" /></td> 
     <td>same</td> 
     <td>same</td> 
     <td>r2c3</td> 
     <td>same</td> 
     <td>same</td> 
    </tr> 
</table> 

これは、データベースから移入されますので、明らかに行のn数があるように起こっているが、それぞれの行には、命名規則を使用してDOMにチェックボックスが追加されます上記の例ではハードコードされています。

"難しい部分"がさまざまなセル値を強調していると思いましたが、それは簡単でした。難しい部分はチェックボックスを使用して2つだけが選択されていることを保証しています。

.each("td").is(":checked").idのさまざまなテイクを使って、チェックボックスのidプロパティを取得できましたが、選択肢を2つの選択肢に限定する方法はありません。

考え方は、2番目のチェックボックスをオンにすると、選択した行の違いを強調表示する機能が起動します。

誰かが希望の結果を達成するための方向に私を微調整できますか?

答えて

1

は私も `$を使用して、カウントを取得することができたここDemo

<table id="historyTable"> 
    <tr> 
    <td><input type="checkbox" id="row_0" /></td> 
    <td>same</td> 
    <td>r0c2</td> 
    <td>r0c3</td> 
    <td>r0c4</td> 
    <td>r0c5</td> 
    </tr> 
    <tr> 
    <td><input type="checkbox" id="row_1" /></td> 
     <td>same</td> 
     <td>same</td> 
     <td>r1c3-different</td> 
     <td>same</td> 
     <td>same</td> 
    </tr> 
    <tr> 
    <td><input type="checkbox" id="row_2" /></td> 
     <td>same</td> 
     <td>same</td> 
     <td>r2c3</td> 
     <td>same</td> 
     <td>same</td> 
    </tr> 
    <tr> 
    <td><input type="checkbox" id="row_3" /></td> 
     <td>same</td> 
     <td>same</td> 
     <td>r2c3</td> 
     <td>same</td> 
     <td>same</td> 
    </tr> 
    <tr> 
    <td><input type="checkbox" id="row_4" /></td> 
     <td>same</td> 
     <td>same</td> 
     <td>r2c3</td> 
     <td>same</td> 
     <td>same</td> 
    </tr> 
</table> 
<p id='output'></p> 


    var inputs=document.getElementsByTagName('INPUT'); 
var limit=2; 
var count=0; 
for(input of inputs) 
{ 
    input.addEventListener("change",function(e){ 
     restrictLimit(e); 
    }); 
} 
function restrictLimit(e) 
{ 
    if(e.target.checked==true) 
    { 
    count++; 
    if(count>limit) 
     { 
     e.target.checked=false; 
     count=limit; 
     } 
    } 
    else 
    { 
     count--; 
    } 
    document.getElementById('output').innerHTML="Checkbox Selected:"+count; 
} 
+0

アルン - 私はそれを使用することができます。ユーザーが> 2を選択しようとすると、ユーザーにとっては直感的ではありませんが、なぜチェックボックスをクリックしているのか不思議に思うだけでなく、ルールを破ったことを知らせる簡単なフィードバックを追加できます選択します。ナッジに感謝します! – rcastagna

1

<td>.is(":checked")を使用することはできません。<td>のチェックボックスで行う必要があります。 .each()には、各要素で実行する関数の引数が必要です。

しかし、簡単な方法は、チェックボックスをすべて選択して.lengthと数えることです。 (「:チェックボックス:入力確認」)

if ($("td :checkbox:checked").length == 2) { 
    // do stuff 
} else { 
    alert("Check exactly 2 rows"); 
} 
+0

を参照してください。彼らだけではなかった場合、length'画面上のチェックボックスは私が望んだものの正確な数ではありませんが、この場合は受け入れられました。助けてくれてありがとう...昨日、私の脳が助けを求めて去った頃に、私の脳は悪い形になっていた! – rcastagna

関連する問題