2016-05-16 3 views
0

入力チェックボックスのリストを作成しようとしていますが、これはPHPによって後で生成されます。したがって、入力に基づいて、従業員を選択することができる、選択に基づいて私のdivを入力し、入力のチェックを外すと、同じ従業員を削除します。私はまた、1人ではなく複数の従業員を選ぶことができる必要があります。現在は、divを従業員に更新しますが、その従業員を削除することはできません。一度に1人の従業員しか選択することもできません(必要に応じて一度に多くの従業員をクリックできる必要があります)。CHECKBOX入力値に基づいてDIV情報を動的に更新します

は、ここで私が得たものである:

HTML

<div id="employee-list"> 
</div> 

<div class="small-2 columns bord-right3 check-box"> 
<input type="checkbox" class="boxid" value="Joe Smith" name="employees"> 
<label class="checkbox-select">Select</label> 
</div> 
<div class="small-10 columns bord-right3"> 
    <span class="employee-name">Joe Smith</span> 
</div> 

<div class="small-2 columns bord-right3 check-box"> 
<input type="checkbox" class="boxid" value="John Smith" name="employees"> 
<label class="checkbox-select">Select</label> 
</div> 
<div class="small-10 columns bord-right3"> 
    <span class="employee-name">John Smith</span> 
</div> 

JS

$('input[name="employees"]').change(function() { 

var inputVal = $('input[name="employees"]:checked').map(function() { 
    return this.value; 
}).get(); 
console.log(inputVal); 

if ($(this).prop('checked')) { //which checkbox was checked 

    if ($(this).val() == inputVal) { 
     $("#employee-list").append('<span class="employee-name2_1"><a href="#" class="item">X</a> ' + inputVal + '</span>'); 
    } 

} else { 
    $('.li_'+$(this).val()).remove(); 
    console.log('item removed'); 
} 

}); 

すべてのヘルプは大歓迎です!もし私が何かを見逃してしまったら、私に知らせてください。

+0

と問題は何ですか?それは働いていないのですか? –

+0

@TiagoFabreそれはdivから項目を削除しないので、コンソールはそれを正常に記録し、削除されたが実際のdivからは表示されないことを示します。また、divを更新するために複数の人を選択することもできません。 – gbya

答えて

0

目標を正しく理解していれば、変更リスナー内のコードの一部が不要です。チェックボックスの値を取得するのにmapを使用する必要はありません。$(this).val()で十分です。そこから単一のif/elseが必要に応じて情報を追加または削除できます。

Fiddle

$('input[name="employees"]').change(function() { 
    var inputVal = $(this).val(); 
    var className = inputVal.replace(/ /g, '_'); 

    if ($(this).prop('checked')) { //which checkbox was checked 
    $("#employee-list").append('<span class="span_' + className + '"><a href="#" class="item">X</a> ' + inputVal + '</span>'); 
    } else { 
    $('.span_'+className).remove(); 
    console.log('item removed'); 
    } 
}); 
+0

これはまさに私が達成しようとしていたものでした。私は適切なdiv id(それは最初のdivだったが、間違ったIDを持つ)で私の質問を更新しました。ありがとうございました!これが最も役に立ちました。あなたがしている '(//g、' _ ')部分が何をしているのか説明できますか?私はそこで何が起こっているのか理解したいと思います。もう一度ありがとうございます。 – gbya

+0

これは人名のスペースをアンダースコアに置き換えるだけなので、後でクラス名として使用してスパンを削除することができます。 '/ /'はスペースにマッチし、 'g 'は"グローバル "(すべてのスペース)を意味します。 '_ 'は、見つかったスペースを(アンダースコア)で置き換えるべきものです。クラス名としてスペースを持つ人名を使用しようとすると、それぞれの名前は独自のクラスになります。 – IrkenInvader

+0

詳細をありがとうございます。再度あなたの応答をありがとうが、残念なことに評判の欠如のために私はあなたの応答をupvoteすることはできませんが、これは私の質問に対する解決策でした。最も役立つ。 – gbya

関連する問題