سؤال

أود أن تفعل شيئا من هذا القبيل إلى وضع علامة checkbox باستخدام مسج:

$(".myCheckBox").checked(true);

أو

$(".myCheckBox").selected(true);

لا شيء من هذا القبيل موجودة ؟

هل كانت مفيدة؟

المحلول

مسج 1.6 +

واستخدم .prop() الأسلوب:

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

مسج 1.5.x وتحت

وطريقة .prop() غير متوفرة، لذلك تحتاج إلى استخدام .attr() .

$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);

لاحظ أن هذا هو href="https://github.com/jquery/jquery/blob/1.5.2/test/unit/attributes.js#L157" النهج المتبع من قبل وحدة الاختبارات مسج السابقة إلى الإصدار 1.6 و هو الأفضل لاستخدام

$('.myCheckbox').removeAttr('checked');

ومنذ إرادة الأخير، إذا تم تحديد خانة البداية، وتغيير سلوك دعوة إلى <لأ href = "https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.reset "يختلط =" noreferrer "> .reset() على أي شكل الذي يحتوي عليه - وهو تغيير السلوك خفية ولكن ربما غير مرحب به

لمزيد من السياق، بعض المناقشات غير مكتملة من التغييرات على التعامل مع السمة checked / الملكية في الانتقال من 1.5.x إلى 1.6 يمكن العثور عليها في في النسخة 1.6 ملاحظات الإصدار وعلى سمات مقابل خصائص في قسم في وثائق .prop()

أي نسخة من مسج

إذا كنت تعمل مع عنصر واحد فقط، يمكنك دائما مجرد تعديل الملكية HTMLInputElement .checked الصورة:

$('.myCheckbox')[0].checked = true;
$('.myCheckbox')[0].checked = false;

وفائدة لاستخدام .prop() و.attr() الطرق بدلا من ذلك هو أنها سوف تعمل على جميع العناصر المتطابقة.

نصائح أخرى

استخدم:

$(".myCheckbox").attr('checked', true); // Deprecated
$(".myCheckbox").prop('checked', true);

وإذا كنت ترغب في معرفة ما اذا كان يتم فحص مربع اختيار أم لا:

$('.myCheckbox').is(':checked');

هذه هي الطريقة الصحيحة لفحص و إلغاء تحديد خانات الاختيار مع مسج, كما هو عبر منصة القياسية ، سوف تسمح شكل reposts.

$('.myCheckBox').each(function(){ this.checked = true; });

$('.myCheckBox').each(function(){ this.checked = false; });

من خلال القيام بذلك ، كنت تستخدم جافا سكريبت معايير التدقيق و إلغاء تحديد خانات الاختيار, لذلك أي متصفح بشكل صحيح بتنفيذ مشروع "فحص" ممتلكات مربع عنصر تشغيل هذه التعليمات البرمجية لا تشوبه شائبة.هذا يجب أن أن جميع المتصفحات الرئيسية ، ولكن أنا غير قادر على اختبار السابقة إلى Internet Explorer 9.

المشكلة (مسج 1.6):

بمجرد أن يقوم المستخدم بالنقر على مربع الاختيار هذا الاختيار يتوقف عن الاستجابة إلى "فحص" سمة التغييرات.

هنا هو مثال على مربع الاختيار سمة الفشل في القيام بهذه المهمة بعد أن شخص ما لديه النقر في خانة (وهذا يحدث في كروم).

كمان

الحل:

باستخدام جافا سكريبت "فحص" الملكية على دوم العناصر, ونحن قادرون على حل المشكلة مباشرة, بدلا من محاولة التلاعب دوم في فعل ما تريد أن تفعل.

كمان

هذا البرنامج المساعد سوف يغير التحقق من الملكية من أي عناصر مختارة من قبل مسج, ونجحت في الاختيار ثم قم بإلغاء تحديد خانات الاختيار تحت كل الظروف.لذلك ، في حين أن هذا قد يبدو مثل تحمل الحل سيجعل موقعك تجربة المستخدم بشكل أفضل ، وتساعد على منع المستخدم من الإحباط.

(function( $ ) {
    $.fn.checked = function(value) {
        if(value === true || value === false) {
            // Set the value of the checkbox
            $(this).each(function(){ this.checked = value; });
        } 
        else if(value === undefined || value === 'toggle') {
            // Toggle the checkbox
            $(this).each(function(){ this.checked = !this.checked; });
        }

        return this;
    };
})( jQuery );

بدلا من ذلك, إذا كنت لا تريد استخدام البرنامج المساعد يمكنك استخدام التعليمات البرمجية التالية مقتطفات:

// Check
$(':checkbox').prop('checked', true);

// Un-check
$(':checkbox').prop('checked', false);

// Toggle
$(':checkbox').prop('checked', function (i, value) {
    return !value;
});

ويمكنك القيام

$('.myCheckbox').attr('checked',true) //Standards compliant

أو

$("form #mycheckbox").attr('checked', true)

إذا كان لديك تعليمات برمجية مخصصة في الحدث onclick للمربع الذي تريد لاطلاق النار، واستخدام هذه واحدة بدلا من ذلك:

$("#mycheckbox").click();

ويمكنك إلغاء عن طريق إزالة السمة تماما:

$('.myCheckbox').removeAttr('checked')

ويمكنك التحقق من كافة خانات مثل هذا:

$(".myCheckbox").each(function(){
    $("#mycheckbox").click()
});

ويمكنك أيضا توسيع الكائن $ .fn مع أساليب جديدة:

(function($)  {
   $.fn.extend({
      check : function()  {
         return this.filter(":radio, :checkbox").attr("checked", true);
      },
      uncheck : function()  {
         return this.filter(":radio, :checkbox").removeAttr("checked");
      }
   });
}(jQuery));

وبعد ذلك يمكنك القيام به فقط:

$(":checkbox").check();
$(":checkbox").uncheck();

وأو قد ترغب في منحهم أسماء أكثر فريدة من نوعها مثل mycheck () وmyuncheck () في حال كنت تستخدم بعض المكتبات الأخرى التي تستخدم تلك الأسماء.

$("#mycheckbox")[0].checked = true;
$("#mycheckbox").attr('checked', true);
$("#mycheckbox").click();

وآخر واحد سوف إطلاق الحدث انقر فوق خانة الاختيار، سوف الآخرين لا. حتى إذا كان لديك تعليمات برمجية مخصصة في الحدث onclick للمربع الذي تريد لاطلاق النار، واستخدام آخر واحد.

لتحقق مربع اختيار يجب عليك استخدام

 $('.myCheckbox').attr('checked',true);

أو

 $('.myCheckbox').attr('checked','checked');

وولإلغاء خانة الاختيار يجب عليك دائما تعيينها إلى false:

 $('.myCheckbox').attr('checked',false);

إذا كنت تفعل

  $('.myCheckbox').removeAttr('checked')

ويزيل السمة جميعا معا، وبالتالي فلن تكون قادرا على إعادة تعيين النموذج.

DEMO BAD مسج 1.6 . وأعتقد أن هذا هو كسر. 1.6 وانا ذاهب الى جعل وظيفة جديدة على ذلك.

عمل جديدة DEMO مسج 1.5.2 يعمل في كروم.

وكل العروض تستخدم

$('#tc').click(function() {
    if ( $('#myCheckbox').attr('checked')) {
        $('#myCheckbox').attr('checked', false);
    } else {
        $('#myCheckbox').attr('checked', 'checked');
    }
});

وهذا يحدد العناصر التي لها سمة محددة بقيمة تحتوي على سلسلة فرعية معينة "ckbItem":

$('input[name *= ckbItem]').prop('checked', true);

وسيكون تحديد كافة العناصر التي تحتوي على ckbItem في سمة اسمها.

على افتراض أن السؤال هو...

كيف يمكنني التحقق من خانة الاختيار تعيين من القيمة ؟

تذكر أنه في نموذجي خانة الاختيار تعيين كل إدخال الكلمات لها نفس الاسم ، وهي تختلف عن السمة value:لا يوجد معرف لكل المدخلات من مجموعة.

زيان الجواب يمكن تمديدها مع أكثر تحديدا محدد, باستخدام سطر التعليمات البرمجية التالي:

$("input.myclass[name='myname'][value='the_value']").prop("checked", true);

وأنا في عداد المفقودين الحل. سوف تستخدم دائما:

if ($('#myCheckBox:checked').val() !== undefined)
{
    //Checked
}
else
{
    //Not checked
}

لتحقق مربع اختيار استخدام على مسج 1.6 أو أعلى فقط القيام بذلك:

checkbox.prop('checked', true);

لإلغاء، استخدام:

checkbox.prop('checked', false);

وهنا ما أود أن استخدام للتبديل مربع باستخدام مسج:

checkbox.prop('checked', !checkbox.prop('checked'));

إذا كنت تستخدم على مسج 1.5 أو أقل:

checkbox.attr('checked', true);

لإلغاء، استخدام:

checkbox.attr('checked', false);

وهنا هو طريقة للقيام بذلك دون مسج

function addOrAttachListener(el, type, listener, useCapture) {
  if (el.addEventListener) {
    el.addEventListener(type, listener, useCapture);
  } else if (el.attachEvent) {
    el.attachEvent("on" + type, listener);
  }
};

addOrAttachListener(window, "load", function() {
  var cbElem = document.getElementById("cb");
  var rcbElem = document.getElementById("rcb");
  addOrAttachListener(cbElem, "click", function() {
    rcbElem.checked = cbElem.checked;
  }, false);
}, false);
<label>Click Me!
  <input id="cb" type="checkbox" />
</label>
<label>Reflection:
  <input id="rcb" type="checkbox" />
</label>

وجرب هذا:

$('#checkboxid').get(0).checked = true;  //For checking

$('#checkboxid').get(0).checked = false; //For unchecking

وهنا هو رمز للتدقيق ودون رادع مع زر:

var set=1;
var unset=0;
jQuery( function() {
    $( '.checkAll' ).live('click', function() {
        $( '.cb-element' ).each(function () {
            if(set==1){ $( '.cb-element' ).attr('checked', true) unset=0; }
            if(set==0){ $( '.cb-element' ).attr('checked', false); unset=1; }
        });
        set=unset;
    });
});

تحديث: هنا هو كتلة التعليمات البرمجية نفسه باستخدام أحدث مسج 1.6+ طريقة دعامة، الذي يحل محل ATTR:

var set=1;
var unset=0;
jQuery( function() {
    $( '.checkAll' ).live('click', function() {
        $( '.cb-element' ).each(function () {
            if(set==1){ $( '.cb-element' ).prop('checked', true) unset=0; }
            if(set==0){ $( '.cb-element' ).prop('checked', false); unset=1; }
        });
        set=unset;
    });
});

ويمكننا استخدام elementObject مع مسج للحصول على سمة التحقق:

$(objectElement).attr('checked');

ويمكننا استخدام هذه لكافة إصدارات مسج من دون أي خطأ.

تحديث: مسج 1.6+ لديه طريقة دعامة جديدة الذي يحل محل ATTR، منها مثلا:

$(objectElement).prop('checked');

إذا كنت تستخدم فونغاب والقيام تطوير التطبيقات، وكان لديك قيمة على الزر الذي تريد أن تظهر على الفور ، تذكر أن القيام بذلك

$('span.ui-[controlname]',$('[id]')).text("the value");

ولقد وجدت أنه من دون فترة، فإن واجهة يتم تحديث بغض النظر عن ما تفعله.

هنا هو رمز و عرض كيفية التحقق من عدة خانات الاختيار...

http://jsfiddle.net/tamilmani/z8TTt/

$("#check").on("click", function () {

    var chk = document.getElementById('check').checked;
    var arr = document.getElementsByTagName("input");

    if (chk) {
        for (var i in arr) {
            if (arr[i].name == 'check') arr[i].checked = true;
        }
    } else {
        for (var i in arr) {
            if (arr[i].name == 'check') arr[i].checked = false;
        }
    }
});

والحلول الممكنة آخر:

    var c = $("#checkboxid");
    if (c.is(":checked")) {
         $('#checkboxid').prop('checked', false);
    } else {
         $('#checkboxid').prop('checked', true);
    }

إذا باستخدام المحمول وتريد واجهة لتحديث وإظهار مربع كما حالها، استخدم ما يلي:

$("#checkbox1").prop('checked', false).checkboxradio("refresh");

ويكون على بينة من تسرب الذاكرة في Internet Explorer قبل إنترنت إكسبلورر 9 ، حيث أن <ل أ href = "http://api.jquery.com/prop/" يختلط = "noreferrer"> الدول وثائق مسج :

<اقتباس فقرة>   

في Internet Explorer قبل إلى الإصدار 9، وذلك باستخدام .prop () لتعيين DOM   خاصية العنصر إلى أي شيء آخر من قيمة بدائية بسيطة   (عدد، سلسلة، أو منطقية) يمكن أن يسبب تسرب الذاكرة إذا كانت الممتلكات   لم تتم إزالة (باستخدام .removeProp ()) قبل أن يتم إزالة عنصر DOM   من المستند. لوضع بأمان القيم على كائنات DOM بدون ذاكرة   التسريبات، واستخدام .data ().

لمسج 1.6 +

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

لمسج 1.5.x وتحت

$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);

لتحقق،

$('.myCheckbox').removeAttr('checked');

لفحص وازل

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

كما @livefree75 قال:

مسج 1.5.x أدناه

يمكنك أيضا تمديد $.fn وجوه جديدة طرق:

(function($)  {
   $.fn.extend({
      check : function()  {
         return this.filter(":radio, :checkbox").attr("checked", true);
      },
      uncheck : function()  {
         return this.filter(":radio, :checkbox").removeAttr("checked");
      }
   });
}(jQuery));

ولكن في الإصدارات الجديدة من مسج, يجب أن تستخدم شيئا مثل هذا:

مسج 1.6+

    (function($)  {
       $.fn.extend({
          check : function()  {
             return this.filter(":radio, :checkbox").prop("checked", true);
          },
          uncheck : function()  {
             return this.filter(":radio, :checkbox").prop("checked",false);
          }
       });
    }(jQuery));

ثم يمكنك أن تفعل فقط:

    $(":checkbox").check();
    $(":checkbox").uncheck();
$('controlCheckBox').click(function(){
    var temp = $(this).prop('checked');
    $('controlledCheckBoxes').prop('checked', temp);
});

وربما هذا هو أقصر وأسهل حل:

$(".myCheckBox")[0].checked = true;

أو

$(".myCheckBox")[0].checked = false;

وأقصر حتى ستكون كما يلي:

$(".myCheckBox")[0].checked = !0;
$(".myCheckBox")[0].checked = !1;

وهنا و<م> jsFiddle كذلك.

وسهل جافا سكريبت بسيط جدا وأقل بكثير علوي:

var elements = document.getElementsByClassName('myCheckBox');
for(var i = 0; i < elements.length; i++)
{
    elements[i].checked = true;
}

مثال هنا

وأنا لم أستطع الحصول عليه العمل باستخدام:

$("#cb").prop('checked', 'true');
$("#cb").prop('checked', 'false');

وكلا الصواب والخطأ أن تحقق خانة الاختيار. ما عملت بالنسبة لي هو:

$("#cb").prop('checked', 'true'); // For checking
$("#cb").prop('checked', '');     // For unchecking

وعندما قمت بفحص مربع اختيار مثل؛

$('.className').attr('checked', 'checked')

وأنه قد لا يكون كافيا. يجب عليك أيضا استدعاء الدالة أدناه؛

$('.className').prop('checked', 'true')

وخصوصا عندما قمت بإزالة خانة الاختيار السمة المحددة.

هنا الحل الكامل باستخدام مسج

أنا اختبار ويعمل 100% :D

    // when the button (select_unit_button) is clicked it returns all the checed checkboxes values 
    $("#select_unit_button").on("click", function(e){

             var arr = [];

             $(':checkbox:checked').each(function(i){
                 arr[i] = $(this).val(); // u can get id or anything else
             });

              //console.log(arr); // u can test it using this in google chrome
    });

في مسج،

if($("#checkboxId").is(':checked')){
    alert("Checked");
}

أو

if($("#checkboxId").attr('checked')==true){
    alert("Checked");
}

في جافا سكريبت،

if (document.getElementById("checkboxID").checked){
    alert("Checked");
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top