javascript - attribute - jquery get selected option value




تعطيل/تمكين أحد المدخلات في jQuery؟ (8)

$input.disabled = true;

أو

$input.disabled = "disabled";

ما هي الطريقة القياسية؟ وبالعكس ، كيف يمكنك تمكين إدخال معطل؟


jQuery 1.6+

لتغيير الخاصية disabled يجب عليك استخدام الدالة .prop() .

$("input").prop('disabled', true);
$("input").prop('disabled', false);

jQuery 1.5 وأدناه

لا توجد الدالة .prop() ، لكن .attr() تشبه:

اضبط السمة المعطلة.

$("input").attr('disabled','disabled');

لتمكين مرة أخرى ، فإن الطريقة الصحيحة هي استخدام .removeAttr()

$("input").removeAttr('disabled');

في أي إصدار من jQuery

يمكنك دائمًا الاعتماد على كائن DOM الفعلي وربما يكون أسرع قليلاً من الخيارين الآخرين إذا كنت تتعامل مع عنصر واحد فقط:

// assuming an event handler thus 'this'
this.disabled = true;

ميزة استخدام .prop() أو .attr() أنه يمكنك تعيين الخاصية لمجموعة من العناصر المحددة.

ملاحظة: في 1.6 هناك طريقة .removeProp() التي تشبه إلى حد كبير removeAttr() ، ولكن لا ينبغي استخدامها على خصائص أصلية مثل مقتطف 'disabled' من الوثائق:

ملاحظة: لا تستخدم هذه الطريقة في إزالة الخصائص الأصلية مثل فحصها أو تعطيلها أو تحديدها. سيؤدي هذا إلى إزالة الموقع تمامًا ، وبعد إزالته ، لا يمكن إضافته مرة أخرى إلى العنصر. استخدم .prop () لتعيين هذه الخصائص إلى false بدلاً من ذلك.

في الواقع ، أشك في وجود العديد من الاستخدامات الشرعية لهذه الطريقة ، حيث يتم استخدام الدعائم المنطقية بطريقة ينبغي عليك تعيينها على "false" بدلاً من "إزالتها" مثل نظيراتها "المميزة" في 1.5


إذا كنت ترغب فقط في عكس الحالة الحالية (مثل سلوك زر التبديل):

$("input").prop('disabled', ! $("input").prop('disabled') );

اعتدت الإجابةgnarf وأضافته كوظيفة

   $.fn.disabled = function (isDisabled) {
     if (isDisabled) {
       this.attr('disabled', 'disabled');
     } else {
       this.removeAttr('disabled');
     }
   };

ثم استخدم مثل هذا

$('#myElement').disable(true);

تحديث لعام 2018:

الآن ليس هناك حاجة إلى jQuery وكان منذ فترة منذ document.querySelector أو document.querySelectorAll (للعناصر المتعددة) تقوم بنفس الوظيفة بالضبط مثل $ ، بالإضافة إلى أكثر صراحة منها getElementById ، getElementsByClassName ، getElementsByTagName

تعطيل حقل واحد من فئة "خانة اختيار المدخلات"

document.querySelector('.input-checkbox').disabled = true;

أو عناصر متعددة

document.querySelectorAll('.input-checkbox').forEach(el => el.disabled = true);

في jQuery Mobile:

لتعطيل

$('#someselectElement').selectmenu().selectmenu('disable').selectmenu('refresh', true);
$('#someTextElement').textinput().textinput('disable');

للتمكين

$('#someselectElement').selectmenu().selectmenu('enable').selectmenu('refresh', true);
$('#someTextElement').textinput('enable');

يمكنك وضع هذا في مكان ما عالميًا في شفرتك:

$.prototype.enable = function () {
    $.each(this, function (index, el) {
        $(el).removeAttr('disabled');
    });
}

$.prototype.disable = function () {
    $.each(this, function (index, el) {
        $(el).attr('disabled', 'disabled');
    });
}

ومن ثم يمكنك كتابة أشياء مثل:

$(".myInputs").enable();
$("#otherInput").disable();

$("input")[0].disabled = true;

أو

$("input")[0].disabled = false;

<html>
<body>

Name: <input type="text" id="myText">



<button onclick="disable()">Disable Text field</button>
<button onclick="enable()">Enable Text field</button>

<script>
function disable() {
    document.getElementById("myText").disabled = true;
}
function enable() {
    document.getElementById("myText").disabled = false;
}
</script>

</body>
</html>






html-input