JQuery සමඟ ආදානයක් අබල කරන්න / සක්‍රීය කරන්න?


2298
$input.disabled = true;

හෝ

$input.disabled = "disabled";

සම්මත ක්‍රමය කුමක්ද? තවද, අනෙක් අතට, ඔබ ආබාධිත ආදානයක් සක්‍රීය කරන්නේ කෙසේද?



1
ඔබට ප්‍රයෝජනවත් විය හැකි ඩිපෙන්ඩ්ස් ඔන් ප්ලගිනය මට හමු විය
ඔන්ෂොප්

Answers:


3824

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 () භාවිතා කරන්න.

ඇත්ත වශයෙන්ම, මෙම ක්‍රමය සඳහා නීත්‍යානුකූල භාවිතයන් බොහොමයක් ඇති බවට මට සැකයක් ඇත, බූලියන් මුක්කු 1.5 ක් තුළ ඔවුන්ගේ “ගුණාංග” සගයන් මෙන් “ඉවත් කිරීම” වෙනුවට ඒවා ව්‍යාජ ලෙස සැකසිය යුතුය.


9
අනෙක් අතට, මතක තබා ගන්න, ඔබට සියලු ආකෘති ආදාන පාලනය අක්‍රිය කිරීමට අවශ්‍ය නම් - incl. පිරික්සුම් කොටු, විකිරණශාලා, පෙළපොත් ආදිය - ඔබ තෝරා ගත ':input'යුත්තේ හුදෙක් නොවේ 'input'. දෙවැන්න සත්‍ය <input> මූලද්‍රව්‍ය පමණක් තෝරා ගනී.
කෝනල් මැසන්

35
@CornelMasson input,textarea,select,buttonභාවිතා කිරීම වඩා ටිකක් හොඳට වඩා :input- :inputඑය තෝරා ගැනීමට තිබෙන නිසා තේරීම් තරමක් අකාර්යක්ෂම ලෙස *tagname විසින් පසුව එක් එක් මූලද්රව්යය සහ ෆිල්ටර් වැඩි පුඩුවක් - ඔබ tagname තේරීම් 4 සමත් නම් එය සෘජුවම වඩා වේගවත් වේ. එසේම, :inputසම්මත CSS තේරීම් querySelectorAll
කාරකයක්

3
මෙය පරිශීලකයාට ප්‍රවේශ වීම වළක්වනවාද, නැතහොත් එය ඇත්ත වශයෙන්ම එය වෙබ් ඉල්ලීමෙන් ඉවත් කරයිද?
OneChillDude

4
.removeProp("disabled")තෝමස් ඩේවිඩ් බේකර් පෙන්වා දුන් පරිදි ක්‍රෝම් වැනි සමහර බ්‍රව්සර් වලදී ෆයර්ෆොක්ස් වැනි සමහරක් මත එය හොඳින් ක්‍රියාත්මක වන අතර එය භාවිතා කිරීම "දේපල සම්පූර්ණයෙන්ම ඉවත් කිරීම සහ නැවත එකතු නොකිරීම" යන ගැටලුවට හේතු විය. අපි ඇත්තටම මෙහි ප්‍රවේශම් විය යුතුයි. සෑම විටම .prop("disabled",false)ඒ වෙනුවට භාවිතා කරන්න
සන්දීපන් නාත්

6
නැංගුරම් මූලද්‍රව්‍ය අක්‍රීය කිරීම සඳහා .prop හෝ .attr ප්‍රමාණවත් නොවේ; .prop මඟින් 'පාලනය' අළු පැහැයක් නොගනී (.attr කරයි, නමුත් href තවමත් සක්‍රීයයි). වැළැක්වීමේ ඩීෆෝල්ට් () යනුවෙන් හඳුන්වන ක්ලික් කිරීමේ සිදුවීම් හසුරුවන්නෙකු ද ඔබ එක් කළ යුතුය.
ජෙෆ් ලෝවර්

62

නව සම්මුතීන් සඳහා && එය අනුවර්තනය වීමට හැකි වන පරිදි ඉදිරියට යාම (ECMA6 (????) සමඟ දේවල් විශාල ලෙස වෙනස් නොවන්නේ නම්:

$(document).on('event_name', '#your_id', function() {
    $(this).removeAttr('disabled');
});

සහ

$(document).off('event_name', '#your_id', function() {
    $(this).attr('disabled','disabled');   
});

12
ජික්ස්! ඇයි $(document).on('event_name', '#your_id', function() {...})ඒ වෙනුවට $('#your_id').on('event_name', function() {...}). ලෙස විස්තර සඟවන්න .මෙම () ප්රලේඛනය හිටපු භාවිතා නියෝජිත සවන් කිරීමට සියලු event_name සිදුවීම් බව බුබුල දක්වා documentසහ ගැලපෙන සඳහා ඔවුන් චෙක්පත් #your_id. දෙවැන්න විශේෂයෙන් $('#your_id')සිදුවීම් වලට පමණක් සවන් දෙන අතර එම පරිමාණයන් වඩා හොඳය.
පීටර් වී. මාර්ච්

23
කලින් වැඩ කරන්නේ ඕනෑම අවස්ථාවක DOM තුළට ඇතුළු කරන ලද මූලද්‍රව්‍යයන් සඳහා වන අතර, දෙවැන්න එම මොහොතේ පවතින ඒවා සඳහා පමණි.
පිස්සුමික්

1
racrazymykl නිවැරදි නමුත් ඔබේ පිටුවේ දැනටමත් ඇති හැඳුනුම්පතක් සමඟ අංග එකතු නොකළ යුතුය.
SepehrM

34
    // Disable #x
    $( "#x" ).prop( "disabled", true );
    // Enable #x
    $( "#x" ).prop( "disabled", false );

සමහර විට ඔබට ආදාන හෝ ටෙක්ස්ටාරියා වැනි ආකෘති අංග අක්‍රීය කිරීමට / සක්‍රීය කිරීමට අවශ්‍ය වේ. ආබාධිත ගුණාංග "ආබාධිත" ලෙස සැකසීමෙන් මෙය පහසුවෙන් කිරීමට Jquery ඔබට උදව් කරයි. උදා:

  //To disable 
  $('.someElement').attr('disabled', 'disabled');

අක්‍රීය මූලද්‍රව්‍යය සක්‍රීය කිරීම සඳහා ඔබට මෙම අංගයෙන් "අක්‍රීය" ගුණාංගය ඉවත් කිරීමට හෝ එහි නූල හිස් කිරීමට අවශ්‍ය වේ. උදා:

//To enable 
$('.someElement').removeAttr('disabled');

// OR you can set attr to "" 
$('.someElement').attr('disabled', '');

යොමු කරන්න: http://garmoncheg.blogspot.fr/2011/07/how-to-disableenable-element-with.html


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

හෝ

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

2
ඇත්ත වශයෙන්ම ප්‍රශ්නය jQuery ඉල්ලා ඇති අතර මෙය සරල ජාවාස්ක්‍රිප්ට් වල තත්වය වෙනස් කරයි, නමුත් එය ක්‍රියාත්මක වේ.
මූලික 6

1
මෙය ජාවාස්ක්‍රිප්ට් හි තත්වය වෙනස් කරයි, නමුත් පළමු ආදානය ලබා ගැනීම සඳහා එය තවමත් jQuery තේරීමක් භාවිතා කරයි.
cjsimon

3
නමුත් මම හිතන්නේ නැහැ අපි මෙහි jquery විශ්වකෝෂයක් හදනවා, පිළිතුරක් ක්‍රියාත්මක වන්නේ නම් හොඳයි
සජ්ජාඩ් ෂිරාසි

8

ඔබට මෙය ඔබගේ කේතයේ ගෝලීය තැනක තැබිය හැකිය:

$.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();

3
ක්රියාකාරිත්වය ඔතන ප්රයෝජනවත් වන අතර, ඔබ භාවිතා කළ යුතු propහා නොවේ attr සමග disabled(jQuery 1.6 හෝ ඊට ඉහළ උපකල්පනය කරමින්) එය නිවැරදිව වැඩ කිරීම සඳහා දේපල.
ගොන් කෝඩින්

1
RTrueBlueAussie භාවිතා කිරීමේ අවාසිය attrකුමක්ද? මම ඉහත කේතය සමහර ව්‍යාපෘති වල භාවිතා කරන අතර මට මතක ඇති පරිදි එය හොඳින් ක්‍රියාත්මක වේ
නිකු සුරදු

1
පැහැදිලිව පෙනෙන ව්‍යතිරේකයන් වන්නේ තිරය පිටුපස ඇති ගුණාංග සහිත පාලනයන් ය. වඩාත්ම ප්රසිද්ධ වන්නේ checkedපිරික්සුම් කොටු වල දේපලයි. භාවිතා කිරීමෙන් attrඑකම ප්‍රති .ලය නොලැබේ.
ගොන් කෝඩින්

7

ඔබට වත්මන් තත්වය වෙනස් කිරීමට අවශ්‍ය නම් (ටොගල බොත්තම් හැසිරීම වැනි):

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

1
ස්තූතියි මට එය ටොගල් කිරීම සඳහා එකම දේ ඇත; prop ("ආදානය"). මුක්කු ('අක්‍රීය', ශ්‍රිතය (i, v) {ආපසු! v;});
Floww

5

ඕනෑම මූලද්‍රව්‍යයක් සක්‍රිය / අක්‍රීය කළ හැකි ඒවා භාවිතා කිරීමට බොහෝ ක්‍රම තිබේ :

ප්‍රවේශය 1

$("#txtName").attr("disabled", true);

ප්රවේශය 2

$("#txtName").attr("disabled", "disabled");

ඔබ jQuery 1.7 හෝ ඊට වැඩි අනුවාදයක් භාවිතා කරන්නේ නම් attr () වෙනුවට prop () භාවිතා කරන්න.

$("#txtName").prop("disabled", "disabled");

ඔබට කිසියම් මූලද්‍රව්‍යයක් සක්‍රීය කිරීමට අවශ්‍ය නම් එය අක්‍රීය කිරීම සඳහා ඔබ කළ දෙයට ප්‍රතිවිරුද්ධ දේ කළ යුතුය. කෙසේ වෙතත් jQuery ඕනෑම ලක්ෂණයක් ඉවත් කිරීමට තවත් ක්‍රමයක් සපයයි.

ප්‍රවේශය 1

$("#txtName").attr("disabled", false);

ප්රවේශය 2

$("#txtName").attr("disabled", "");

ප්‍රවේශය 3

$("#txtName").removeAttr("disabled");

නැවතත්, ඔබ jQuery 1.7 හෝ ඊට වැඩි අනුවාදයක් භාවිතා කරන්නේ නම් attr () වෙනුවට prop () භාවිතා කරන්න. ඒ. JQuery භාවිතයෙන් ඔබ ඕනෑම අංගයක් සක්‍රිය හෝ අක්‍රීය කරන්නේ එලෙසයි.


2

2018 සඳහා යාවත්කාලීන කිරීම:

දැන් jQuery සඳහා කිසිදු අවශ්යතාවයක් නොමැති වන අතර එය එතැන් සිට ටික ගොසින් document.querySelector හෝ document.querySelectorAll(විවිධ බලවේග සඳහා) $, ප්ලස් වඩා පැහැදිලි අය ලෙස පාහේ හරියටම සමාන රැකියාවක් කරන්න getElementById, getElementsByClassName,getElementsByTagName

"ආදාන-පිරික්සුම් කොටුව" පන්තියේ එක් ක්ෂේත්‍රයක් අක්‍රීය කිරීම

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

හෝ බහු අංග

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

1
ප්රශ්නය විශේෂයෙන් jQuery ගැන අසයි ... නමුත් ඒ හා සමානව ඔබේ ප්රකාශය නිවැරදි වන අතර, බහු මූලද්රව්ය නොමැති විට jQuery මේ සඳහා භාවිතා කිරීම අවශ්ය නොවන බව දැන ගැනීම වටී .
ඇඩිසන්

2

ආකෘති මූලද්‍රව්‍යය අක්‍රීය කිරීමට හෝ සක්‍රීය කිරීමට හෝ jQuery භාවිතා කරමින් ගතිකව පාලනය කිරීමට ඔබට jQuery මුක්කු () ක්‍රමය භාවිතා කළ හැකිය. මුක්කු () ක්‍රමයට jQuery 1.6 සහ ඊට වැඩි අවශ්‍ය වේ.

උදාහරණයක්:

<script type="text/javascript">
        $(document).ready(function(){
            $('form input[type="submit"]').prop("disabled", true);
            $(".agree").click(function(){
                if($(this).prop("checked") == true){
                    $('form input[type="submit"]').prop("disabled", false);
                }
                else if($(this).prop("checked") == false){
                    $('form input[type="submit"]').prop("disabled", true);
                }
            });
        });
    </script>

1

අක්‍රීය කරන්න:

$('input').attr('readonly', true); // Disable it.
$('input').addClass('text-muted'); // Gray it out with bootstrap.

සක්‍රීය කරන්න:

$('input').attr('readonly', false); // Enable it.
$('input').removeClass('text-muted'); // Back to normal color with bootstrap.

1

ආදාන වර්ගය සඳහා සත්‍ය අක්‍රීය කරන්න:

විශේෂිත ආදාන වර්ගයක නම් ( උදා. පෙළ වර්ග ආදානය )

$("input[type=text]").attr('disabled', true);

සියලු වර්ගවල ආදාන වර්ග සඳහා

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

1
ස්තූතියි මෙය ආදාන නාමයකට හුදකලා වීමට මට උදව් විය. $("input[name=method]").prop('disabled', true);
හැරී බොෂ්

1

මෙය මට වැඩ කරයි

$("#values:input").attr("disabled",true);
$("#values:input").attr("disabled",false);

0

මම @gnarf පිළිතුර භාවිතා කර එය ශ්‍රිතයක් ලෙස එකතු කළෙමි

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

එහෙනම් මේ වගේ පාවිච්චි කරන්න

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

0

2018, JQuery නොමැතිව (ES6)

සියල්ල අක්‍රීය කරන්න input:

[...document.querySelectorAll('input')].map(e => e.disabled = true);

inputසමඟ අක්‍රීය කරන්නid="my-input"

document.getElementById('my-input').disabled = true;

ප්‍රශ්නය JQuery සමඟ ය , එය FYI පමණි.




-1
<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>

1
සමාලෝචන පෝලිමේ සිට : කරුණාකර ඔබේ පිළිතුර වටා තවත් සන්දර්භයක් එක් කරන ලෙස මම ඔබෙන් ඉල්ලා සිටිමි. කේත පමණක් පිළිතුරු තේරුම් ගැනීමට අපහසුය. ඔබේ ලිපියේ වැඩි විස්තර එකතු කළ හැකි නම් එය අසන්නාට සහ අනාගත පා readers කයන්ට උපකාර කරනු ඇත.
ආර්බීටී

-1

JQuery ජංගම:

අක්‍රීය කිරීම සඳහා

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

සක්‍රීය කිරීම සඳහා

$('#someselectElement').selectmenu().selectmenu('enable').selectmenu('refresh', true);
$('#someTextElement').textinput('enable');
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.