2013-08-06 43 views
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.I已添加多個用戶程序。問題是我不想爲相同的程序添加兩次用戶。如何做到這一點。我在jQuery中嘗試了以下,但無濟於事。如何不使用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> 

任何建議/幫助是welcome.Thanks提前。

我的解決辦法:

$('#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') 
         } 
        }) 
}) 
+3

可以節省大家如果您在jsfiddle上放置了一個工作示例,則需要付出一些努力(並因此獲得更快的響應)。乾杯 –

+0

我的回答對你有幫助嗎? –

回答

1

創建並填寫一個JavaScript對象。用戶作爲關鍵,無論結局如何,都不包含重複。

  • 說,我們遍歷三個不同的用戶
  • 用戶「傑克」與「42」的ID出現兩次
  • 當你迭代四次以上的用戶,填寫一個JavaScript對象,而使用用戶ID作爲關鍵
var oUsers = {}; 
oUsers['42'] = 'Jack'; 
oUsers['43'] = 'Lucy'; 
oUsers['44'] = 'Fennel'; 
oUsers['42'] = 'Jack'; 
> oUsers 
> Object {42: "Jack", 43: "Lucy", 44: "Fennel"} 
> 
+0

我不明白,請您詳細說明一下。 –

+0

@sammy,我更新了答案。如果不夠清楚,請告訴我。 –

+0

我明白你的意思,但是我按照上面的編輯過。 –

0
$('#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') 
         } 
        }) 
})