jQuery:查找具有其他名称的复选框是否具有相同的值

时间:2014-08-27 09:54:08

标签: jquery checkbox

我再次搜索并搜索了一个解决方案,但我找不到任何类似的情况。

在表格中,我有一个带有复选框的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代码吗?

非常感谢

4 个答案:

答案 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);
            }
        })
    })
});

这对我来说很好!!