0
<div class="span6">
<div class="control-group">
<label class="control-label">User Name<span class="required">*</span></label>
<div class="controls"> 
<?php
foreach($res as $key=>$value){
foreach($value as $ind=>$username){
echo '<div class="controls users">'.form_checkbox('username[]', $username).$username.'</div>';
}
}
?> 
</div>
</div>
</div>
<div class="span6">
<div class="control-group">
<label class="control-label">Programs<span class="required">*</span></label>
<?php 
$ids = explode(',', $program_id);
foreach($programs as $value){
?>
<div class="controls programs"> 
<?php echo '<label class="radio">'.form_radio('programs', $value->id).$value->program_name.'</label>' ?>
<div class="listings <?php echo $value->id ?>"></div>
</div>
<?php } ?>
<input type="button" name="reset" value="Reset" id="reset"/>
<input type="button" name="submit" value="Ok" id="oksubmit"/>
</div>
</div>

ユーザーとプログラムがあります。プログラムにユーザーを追加したいのですが、jquery を使用しています。プログラムに複数のユーザーを追加しました。問題は、同じプログラムにユーザーを 2 回追加したくないということです。その方法です。jQuery で次のことを試しましたが、うまくいきませんでした。 .

<script type="text/javascript">
    $(document).ready(function(e) {
         $('.programs div.listings').slideUp();

        $('#oksubmit').click(function(){
            var error = false;
            var temp = '';
            var selusers = $('div.users span.checked input').map(function(_,el){
                return $(el).val();
            }).get();
            var prgm = $('div.programs span.checked input').val();

            if(selusers == ''){
                alert('Select at least 1 user.');
                var error = true;
                return false;
            }
            if(prgm == ''){
                alert('Select 1 program.');
                var error = true;
                return false;
            }
            if( ! error){
                $('div.'+prgm).slideDown();
                $('div.users span.checked').each(function(){ 
                    var value=$(this).find('input[type="checkbox"]').val();
                    if($('div.'+prgm).children().length > 0){
                        $('div.'+prgm).children().each(function(){
                            var childval = $('div.list input').val();
                            if(value == childval){alert('a');
                                alert('Error');
                                var error = true;
                                return false;
                            }else{

                                alert('n');
                            }
                        })
                        if( ! error){
                            temp += '<div class="list"><input type="text" value="'+value+'" readonly></input><a class="delete" id="'+value+'">X</a></div>';
                        }
                    }else{
                        temp += '<div class="list"><input type="text" value="'+value+'" readonly></input><a class="delete" id="'+value+'">X</a></div>';
                    }

                })
                $('div.'+prgm).append(temp);


            }
});
</script>

任意の提案/ヘルプを歓迎します。事前に感謝します。

私の解決策:

$('#oksubmit').click(function(){
    $('div.users span.checked').each(function(){
                        var flag = true; 
                        var value = $(this).find('input[type="checkbox"]').val();
                        var child = $('div.'+prgm).find('.list').size();
                        var temp = '<div class="list"><input type="text" name="selusers['+prgm+'][]" value="'+value+'" readonly></input><a class="delete btn-danger" id="'+value+'"><i class="icon-remove icon-white"></i></a></div>';
                        $('div.'+prgm).find('div.list').each(function(ind,val){
                            var childval = $(this).find('input').val();
                            if(value == childval){
                                flag =false;
                                alert('Cant add '+value+' twice in same program');
                                return false;
                            }
                        });
                        if(flag){
                            $('div.'+prgm).append(temp);
                        }else{
                            //alert('b')
                        }
                    })
})
4

2 に答える 2

1

JavaScript オブジェクトを作成して入力します。ユーザーをキーとして、最後に残るものは重複を含みません。

  • 3 人の異なるユーザーをループしているとします。
  • ID「42」のユーザー「Jack」が 2 回表示される
  • ユーザーを 4 回反復するときは、ユーザー ID をキーとして使用しながら JavaScript オブジェクトを埋めます
var oUsers = {};
oUsers['42'] = 'Jack';
oUsers['43'] = 'Lucy';
oUsers['44'] = 'Fennel';
oUsers['42'] = 'Jack';
> oUsers
> Object {42: "Jack", 43: "Lucy", 44: "Fennel"}
>
于 2013-08-06T12:46:48.897 に答える