2014-08-27 130 views
1

我已经搜索并再次搜索解决方案,但找不到任何类似的案例。jQuery:查找与其他名称的复选框是否具有相同的值

一个表里面,我有一个复选框PHP的形式,这样产生的:

while($getalldefenseurs=mysqli_fetch_assoc($result_check_alldefenseurs)){ 
     echo ' 
     <tr class="liste-defenseurs"> 
      <td>'.$getalldefenseurs['Calciatore'].'&nbsp;('.$getalldefenseurs['Squadra'].')</td> 
      <td class="number"><input type="checkbox" class="bouton" value="'.$getalldefenseurs['id'].'" name="titulaire-defenseur"/></td> 
      <td class="number"><input type="checkbox" class="bouton" value="'.$getalldefenseurs['id'].'" name="remplacant-defenseur"/></td> 
     </tr>'; 
    } 

它给了我这样的事情:

<tr class="liste-defenseurs"> 
     <td>LICHTSTEINER&nbsp;(JUVENTUS)</td> 
     <td class="number"><input type="checkbox" name="titulaire-defenseur" value="220" id="LICHTSTEINER" class="bouton"></td> 
     <td class="number"><input type="checkbox" name="remplacant-defenseur" value="220" class="bouton"></td> 
     <td class="number"><input type="checkbox" name="reserviste-defenseur" value="220" class="bouton"></td> 
    </tr> 
    <tr class="liste-defenseurs"> 
     <td>CEPPITELLI&nbsp;(CAGLIARI)</td> 
     <td class="number"><input type="checkbox" name="titulaire-defenseur" value="355" id="CEPPITELLI" class="bouton"></td> 
     <td class="number"><input type="checkbox" name="remplacant-defenseur" value="355" class="bouton"></td> 
     <td class="number"><input type="checkbox" name="reserviste-defenseur" value="355" class="bouton"></td> 
    </tr> 

正如你所看到的,我不能知道每个复选框的价值,但我知道他们的名字。

事情是我不希望任何具有相同值的复选框在同一时间被检查。 所以在我的javascript我试过下面这段代码,但它并不总是工作,我认为这是由于我检查框在我的表...的顺序

$("tr.liste-defenseurs td input:checkbox").on('change',function(e) {  
    if($("input[name='remplacant-defenseur']:checked").val() == $("input[name='titulaire-defenseur']:checked").val()) { 
     $(this).prop('checked', false); 
     alert("You can't check 2 checkboxes on the same line at the same time."); 
    } 
}); 

谁能帮我纠正我的jQuery代码为它工作吗?

非常感谢

回答

0

的事情是我不希望在同一时间进行检查具有相同价值的复选框。

所以不管该复选框,如果复选框被选中,要取消所有其他有同样的名字?您可以在value选择:

$("tr.liste-defenseurs td input:checkbox").on('change',function(e) { 
    $('input[type=checkbox][value="' + this.value + '"]') 
     .not(this) 
     .prop("checked", false); 
}); 

边注:当您使用jQuery伪选择像,你强迫jQuery来处理处理JavaScript代码的选择,而不是换手至浏览器的更有效自己选择器处理。有时这是值得的,但我会使用input[type=checkbox],而不是,因为后者真的不会买任何东西...

+1

非常感谢这个快速简单的解决方案,它的作用就像一个魅力!你的建议帮助了我。 – Fanzouze 2014-08-27 11:26:58

0

我不是很习惯stackoverflow - 但我看不到名称='remplacant-在输出表中引用了'attaquant']和name ='titulaire-attaquant']。

你可以尝试的另一种方法是简单地检查$(this).val()对选中的变量数组。

var selected_groups = $("input[name='names-french']:checked").map(function() { 
     return $(this).val(); 
    }).get(); 

这将解决它 - 但我认为这是一个命名的问题从一开始。

+0

对不起,我有一个很长的代码,我复制了错误的行,我的意思是name ='remplacant-defenceur'和name ='titulaire-defenceur',我会改变它! 非常感谢您的回答! – Fanzouze 2014-08-27 11:17:42

0
$("tr.liste-defenseurs td input:checkbox").on('change',function(e) {  
    if($('input[value="'+$(this).val()+'"]:checked').length > 1){ 
    alert("You can't check 2 checkboxes on the same line at the same time."); 
    $(this).attr('checked',false); 
    } 
}); 
+0

谢谢你的帮助:) – Fanzouze 2014-08-27 11:27:43

0
$(document).ready(function(){ 
    var array = []; 
    $('table').find('input').each(function(){ 
     $(this).on('change',function(){   if(jQuery.inArray($(this).val(), array) === -1){ 
      array.push($(this).val()); 
      $(this).prop("checked",true); 
      }else{ 
       alert("You cant check!!"); 
       $(this).prop("checked",false); 
      } 
     }) 
    }) 
}); 

这工作对我很好!

相关问题