我再次搜索并搜索了一个解决方案,但我找不到任何类似的情况。
在表格中,我有一个带有复选框的PHP表单,生成如下:
while($getalldefenseurs=mysqli_fetch_assoc($result_check_alldefenseurs)){
echo '
<tr class="liste-defenseurs">
<td>'.$getalldefenseurs['Calciatore'].' ('.$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 (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 (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 :(得分:0)
事情是我不想要同时检查任何具有相同值的复选框。
因此,无论复选框的名称如何,如果选中了一个框,您是否要取消选中具有相同值的所有其他框?您可以选择value
:
$("tr.liste-defenseurs td input:checkbox").on('change',function(e) {
$('input[type=checkbox][value="' + this.value + '"]')
.not(this)
.prop("checked", false);
});
旁注:当你使用像input:checkbox
这样的jQuery伪选择器时,你强制jQuery处理JavaScript代码中的选择器处理,而不是传递给浏览器更高效的自己的选择器处理。有时候这是值得的,但我使用input[type=checkbox]
而不是input:checkbox
因为后者真的不会给你买任何东西......
答案 1 :(得分:0)
我不习惯stackoverflow - 但我看不到name ='remplacant-attaquant']和name ='titulaire-attaquant']在out out table中被引用。
您可以尝试的另一种方法是简单地针对已检查的变量数组检查$(this).val()。
var selected_groups = $("input[name='names-french']:checked").map(function() {
return $(this).val();
}).get();
这可以解决它 - 但我认为从一开始就是一个命名问题。
答案 2 :(得分: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);
}
});
答案 3 :(得分: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);
}
})
})
});
这对我来说很好!!