$input.disabled = true;
veya
$input.disabled = "disabled";
Standart yol hangisidir? Tersine, devre dışı bırakılmış bir girişi nasıl etkinleştirirsiniz?
$input.disabled = true;
veya
$input.disabled = "disabled";
Standart yol hangisidir? Tersine, devre dışı bırakılmış bir girişi nasıl etkinleştirirsiniz?
Yanıtlar:
Özelliği değiştirmek disabled
için .prop()
işlevi kullanmalısınız .
$("input").prop('disabled', true);
$("input").prop('disabled', false);
.prop()
Fonksiyon mevcut değil, .attr()
benzer yapar:
Devre dışı bırakılmış özniteliği ayarlayın.
$("input").attr('disabled','disabled');
Tekrar etkinleştirmek için uygun yöntem .removeAttr()
$("input").removeAttr('disabled');
Her zaman gerçek DOM nesnesine güvenebilirsiniz ve yalnızca bir öğeyle ilgileniyorsanız muhtemelen diğer iki seçenekten biraz daha hızlıdır:
// assuming an event handler thus 'this'
this.disabled = true;
.prop()
Veya .attr()
yöntemlerini kullanmanın avantajı, bir grup seçili öğe için özelliği ayarlayabilmenizdir.
Not: 1.6'da .removeProp()
kulağa çok benzeyen bir yöntem vardır removeAttr()
, ancak dokümantasyondan alıntı gibi yerel mülklerde KULLANILMAMALIDIR'disabled'
:
Not: İşaretli, devre dışı veya seçilen gibi yerel özellikleri kaldırmak için bu yöntemi kullanmayın. Bu, özelliği tamamen kaldıracak ve kaldırıldıktan sonra öğeye tekrar eklenemez. Bu özellikleri bunun yerine false olarak ayarlamak için .prop () kullanın.
Aslında, bu yöntem için birçok meşru kullanım olduğundan şüphe duyuyorum, boolce sahne donanımı, 1.5'te "öznitelik" meslektaşları gibi "kaldırmak" yerine onları yanlış olarak ayarlamanız gerektiği şekilde yapılır
':input'
sadece seçmek zorunda değilsiniz 'input'
. İkincisi yalnızca gerçek <input> öğelerini seçer.
input,textarea,select,button
kullanmaktan biraz daha iyidir :input
- :input
çünkü bir seçici oldukça verimsizdir, çünkü *
her öğenin üzerine dönüp tagname ile filtrelemek zorundadır - 4 tagname seçicisini doğrudan geçerseniz çok daha hızlıdır. Ayrıca, :input
standart bir CSS seçici değildir, bu yüzden mümkün olan tüm performans kazançları querySelectorAll
kaybolur
.removeProp("disabled")
konusunu neden oldu o Firefox gibi bazı cezası çalışıyordu, oysa Chrome gibi bazı tarayıcılarda durumunda @ThomasDavidBaker tarafından sivri out gibi "özelliği tamamen ve yine eklenmeye kaldırıldı alma". Burada gerçekten dikkatli olmalıyız. .prop("disabled",false)
Bunun yerine daima kullanın
Sadece yeni sözleşmeler uğruna ve ileride uyarlanabilir hale getirilmesi için (işler ECMA6 ile önemli ölçüde değişmedikçe (????):
$(document).on('event_name', '#your_id', function() {
$(this).removeAttr('disabled');
});
ve
$(document).off('event_name', '#your_id', function() {
$(this).attr('disabled','disabled');
});
$(document).on('event_name', '#your_id', function() {...})
yerine $('#your_id').on('event_name', function() {...})
. JQuery .on () belgelerinde açıklandığı gibi , eski temsilci temsilci kullanır ve tüm event_name
olayları dinler document
ve bir eşleşme olup olmadığını denetler #your_id
. İkincisi özellikle $('#your_id')
sadece olayları dinler ve bu daha iyi ölçeklenir.
// Disable #x
$( "#x" ).prop( "disabled", true );
// Enable #x
$( "#x" ).prop( "disabled", false );
Bazen giriş veya metin alanı gibi form öğesini devre dışı bırakmanız / etkinleştirmeniz gerekir. Jquery, devre dışı özniteliği "devre dışı" olarak ayarlayarak bunu kolayca yapmanıza yardımcı olur. Örneğin:
//To disable
$('.someElement').attr('disabled', 'disabled');
Devre dışı bırakılmış öğeyi etkinleştirmek için, bu öğeden "devre dışı" özelliğini kaldırmanız veya dizesini boşaltmanız gerekir. Örneğin:
//To enable
$('.someElement').removeAttr('disabled');
// OR you can set attr to ""
$('.someElement').attr('disabled', '');
bakın: http://garmoncheg.blogspot.fr/2011/07/how-to-disableenable-element-with.html
$("input")[0].disabled = true;
veya
$("input")[0].disabled = false;
Bunu kodunuza global bir yere koyabilirsiniz:
$.prototype.enable = function () {
$.each(this, function (index, el) {
$(el).removeAttr('disabled');
});
}
$.prototype.disable = function () {
$.each(this, function (index, el) {
$(el).attr('disabled', 'disabled');
});
}
Sonra şöyle şeyler yazabilirsiniz:
$(".myInputs").enable();
$("#otherInput").disable();
prop
ve değil attr
ile disabled
bunu (yukarıdaki jQuery 1.6 veya varsayarak) düzgün çalışması için mülk.
attr
? Bazı projelerde yukarıdaki kodu kullanıyorum ve hatırladığım kadarıyla tamam
checked
onay kutularının mülkiyetidir. Kullanmak attr
aynı sonucu vermeyecektir.
Bunları kullanmanın herhangi bir öğeyi etkinleştirmenin / devre dışı bırakmanın birçok yolu vardır :
Yaklaşım 1
$("#txtName").attr("disabled", true);
Yaklaşım 2
$("#txtName").attr("disabled", "disabled");
JQuery 1.7 veya daha üst bir sürümünü kullanıyorsanız, attr () yerine prop () kullanın.
$("#txtName").prop("disabled", "disabled");
Herhangi bir öğeyi etkinleştirmek istiyorsanız, öğeyi devre dışı bırakmak için yaptığınız işlemin tersini yapmanız yeterlidir. Ancak jQuery herhangi bir özniteliği kaldırmak için başka bir yol sağlar.
Yaklaşım 1
$("#txtName").attr("disabled", false);
Yaklaşım 2
$("#txtName").attr("disabled", "");
Yaklaşım 3
$("#txtName").removeAttr("disabled");
Yine, jQuery 1.7 veya daha yüksek bir sürümünü kullanıyorsanız, attr () yerine prop () kullanın. Öyle. JQuery kullanarak herhangi bir öğeyi nasıl etkinleştirir veya devre dışı bırakırsınız.
2018 güncellemesi:
Şimdi jQuery'ye gerek yok ve document.querySelector
veya document.querySelectorAll
(birden fazla öğe için) $ ile neredeyse aynı işi ve artı daha açık olanları getElementById
,getElementsByClassName
,getElementsByTagName
"İnput-checkbox" sınıfının bir alanını devre dışı bırakma
document.querySelector('.input-checkbox').disabled = true;
veya birden çok öğe
document.querySelectorAll('.input-checkbox').forEach(el => el.disabled = true);
JQuery kullanarak form öğesini devre dışı bırakmak veya etkinleştirmek veya dinamik olarak denetlemek için jQuery prop () yöntemini kullanabilirsiniz. Prop () yöntemi jQuery 1.6 ve üzerini gerektirir.
Misal:
<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>
Devre Dışı:
$('input').attr('readonly', true); // Disable it.
$('input').addClass('text-muted'); // Gray it out with bootstrap.
Etkinleştirme:
$('input').attr('readonly', false); // Enable it.
$('input').removeClass('text-muted'); // Back to normal color with bootstrap.
Giriş türü için true değerini devre dışı bırak:
Belirli bir giriş tipi olması durumunda ( Örn. Metin tipi girişi )
$("input[type=text]").attr('disabled', true);
Her tür giriş tipi için
$("input").attr('disabled', true);
$("input[name=method]").prop('disabled', true);
bu benim için çalışıyor
$("#values:input").attr("disabled",true);
$("#values:input").attr("disabled",false);
@Gnarf yanıtı kullandım ve fonksiyon olarak ekledim
$.fn.disabled = function (isDisabled) {
if (isDisabled) {
this.attr('disabled', 'disabled');
} else {
this.removeAttr('disabled');
}
};
Öyleyse böyle kullan
$('#myElement').disable(true);
Tümünü devre dışı bırak input
:
[...document.querySelectorAll('input')].map(e => e.disabled = true);
Devre Dışı input
ileid="my-input"
document.getElementById('my-input').disabled = true;
Soru ile sadece Bilginize var, JQuery.
Yaklaşım 4 (bu, vahşi kodlayıcı yanıtının uzantısıdır )
Bunun gibi kullanın,
$( "#id" ).prop( "disabled", true );
$( "#id" ).prop( "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>
JQuery Mobile'da:
$('#someselectElement').selectmenu().selectmenu('disable').selectmenu('refresh', true);
$('#someTextElement').textinput().textinput('disable');
$('#someselectElement').selectmenu().selectmenu('enable').selectmenu('refresh', true);
$('#someTextElement').textinput('enable');