jQuery:“:checked”总是返回true

时间:2019-03-06 10:01:03

标签: javascript jquery

 
 function WhichOneIsChecked(){
 var Item1 = ""; var Item2 = ""; var Item3 = "";
    if ($('input[type="checkbox"][name="gun"]:checked')) {
        Item1 = "مسدس";
    } if ($('input[type="checkbox"][name="phone"]:checked')) {
        Item2 = "هاتف";
    }
    if ($('input[type="checkbox"][name="car"]:checked')) {
        Item3 = "سيارة";
    }
    $("#p").html(Item1 + Item2 + Item3);
        
        }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label class="ml-1">سيارة</label>
                <input type="checkbox" name="car" />
                <label class="ml-1">هاتف</label>
                <input type="checkbox"  name="phone" />
                <label class="ml-1">مسدس</label>
                <input type="checkbox"  name="gun" />
                <p id="p"></p>
                <a onclick='WhichOneIsChecked()'> click me</a>

我的问题是,如果我选中了一个复选框。 在javascript中,它使我所有复选框均已选中

 <label class="ml-1">سيارة</label>
        <input type="checkbox" name="car" />
        <label class="ml-1">هاتف</label>
        <input type="checkbox"  name="phone" />
        <label class="ml-1">مسدس</label>
        <input type="checkbox"  name="gun" />

   <script>var Item1 = ""; var Item2 = ""; var Item3= "";
    if ($('input[name="gun"]:checked')) {
        Item1 = "مسدس";
    } if ($('input[name="phone"]:checked')) {
        Item2 = "هاتف";
    }
    if ($('input[name="car"]:checked')) {
        Item3 = "سيارة";
    }
console.log(Item1 + Item2 + Item3);</script>

如果我仅选中这三个复选框之一;在javascript中,它使我选中了复选框

4 个答案:

答案 0 :(得分:1)

对每个元素使用 id ,然后检查以下内容: $('#phone')。is(':checked')

        
        
         
 function WhichOneIsChecked(){
 var Item1 = ""; var Item2 = ""; var Item3= "";
            if ($('#gun').is(':checked')) {
                Item1 = "مسدس";
            } if ($('#phone').is(':checked')) {
                Item2 = "هاتف";
            }
            if ($('#car').is(':checked')) {
                Item3 = "سيارة";
            }
        console.log(Item1 + Item2 + Item3);
    $("#p").html(Item1 + Item2 + Item3);
        
        }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label class="ml-1">سيارة</label>
                <input type="checkbox" id="car" />
                <label class="ml-1">هاتف</label>
                <input type="checkbox"  id="phone" />
                <label class="ml-1">مسدس</label>
                <input type="checkbox"  id="gun" />
                
                 <p id="p"></p>
                <a onclick='WhichOneIsChecked()'> click me</a>

答案 1 :(得分:0)

在所有选项中使用相同的名称并使用所需的功能

<label class="ml-1">سيارة</label>
    <input type="checkbox" name="item" />
    <label class="ml-1">هاتف</label>
    <input type="checkbox"  name="item" />
    <label class="ml-1">مسدس</label>
    <input type="checkbox"  name="item" />
    <p id="p"></p>
    <a onclick='WhichOneIsChecked()'> click me</a>

     function WhichOneIsChecked(){
            var checklist="";
            $.each($("input[name='item']:checked"), function () {
                checklist+=($(this).val())+" ";
            });
            $("#p").html(checklist);       
        }

答案 2 :(得分:0)

更好的选择是使用prop()函数。

答案 3 :(得分:0)

我认为这可能是重复的-可以在这里找到足够的答案:stackoverflow.com/questions/901712/… 从那开始,

 $('#id_your_element').prop('checked') 

应该做