jquery / javascript içindeki yalnızca üst div adını söyleyerek tüm alanları (textarea / textfield / seçenek / giriş / onay kutusu / gönderme vb.) bir formda devre dışı bırakmanın bir yolu var mı?
jquery / javascript içindeki yalnızca üst div adını söyleyerek tüm alanları (textarea / textfield / seçenek / giriş / onay kutusu / gönderme vb.) bir formda devre dışı bırakmanın bir yolu var mı?
Yanıtlar:
:input
Seçiciyi bir üst seçiciyle birlikte kullanmayı deneyin :
$("#parent-selector :input").attr("disabled", true);
div
adla yapabilmesi gerektiğiydi ve hepsi bu. Daha fazla bilgi verilirse daha etkili bir çözüm bulabilirdim.
$('#mydiv').find('input, textarea, button, select').attr('disabled','disabled');
$('#mydiv').find('input, textarea, button')
.
1.6+ için jquery .prop()
yerine .attr()
,
$("#parent-selector :input").prop("disabled", true);
veya
$("#parent-selector :input").attr("disabled", "disabled");
$(document).ready(function () {
$('#chkDisableEnableElements').change(function () {
if ($('#chkDisableEnableElements').is(':checked')) {
enableElements($('#divDifferentElements').children());
}
else {
disableElements($('#divDifferentElements').children());
}
});
});
function disableElements(el) {
for (var i = 0; i < el.length; i++) {
el[i].disabled = true;
disableElements(el[i].children);
}
}
function enableElements(el) {
for (var i = 0; i < el.length; i++) {
el[i].disabled = false;
enableElements(el[i].children);
}
}
Bu kod satırı tüm giriş öğelerini devre dışı bırakacaktır
$('#yourdiv *').prop('disabled', true);
Bunu yalnızca 'devre dışı' HTML özelliğini kullanarak gerçekleştirmeye ne dersiniz?
<form>
<fieldset disabled>
<div class="row">
<input type="text" placeholder="">
<textarea></textarea>
<select></select>
</div>
<div class="pull-right">
<button class="button-primary btn-sm" type="submit">Submit</button>
</div>
</fieldset>
</form>
Sadece alan setine devre dışı bırakılarak o alan setinin içindeki tüm alanlar devre dışı bırakılır.
$('fieldset').attr('disabled', 'disabled');
Aşağıdaki fonksiyonu çeşitli noktalarda kullanıyorum. Sağ seçici kullanıldığı sürece bir tablodaki div veya düğme öğelerinde çalışır. Sadece ": button" benim için yeniden etkinleştirmez.
function ToggleMenuButtons(bActivate) {
if (bActivate == true) {
$("#SelectorId :input[type='button']").prop("disabled", true);
} else {
$("#SelectorId :input[type='button']").removeProp("disabled");
}
}
Aşağıda tüm giriş devre dışı bırakılacak, ancak btn sınıfı kullanılamayacak ve ayrıca devre dışı css üzerine yazmak için sınıf eklenmeyecektir.
$('#EditForm :input').not('.btn').attr("disabled", true).addClass('disabledClass');
css sınıfı
.disabledClass{
background-color: rgb(235, 235, 228) !important;
}
Benim için kabul edilen cevap, devre dışı bırakılan bazı asp net gizli alanları olduğu için işe yaramadı, bu yüzden sadece görünür alanları devre dışı bırakmayı seçtim
//just to save the list so we can enable fields later
var list = [];
$('#parent-selector').find(':input:visible:not([readonly][disabled]),button').each(function () {
list.push('#' + this.id);
});
$(list.join(',')).attr('readonly', true);
Div Öğelerini Düzenleme'yi önlemek için CSS Sınıfını kullanma
CSS:
.divoverlay
{
position:absolute;
width:100%;
height:100%;
background-color:transparent;
z-index:1;
top:0;
}
JS:
$('#divName').append('<div class=divoverlay></div>');
Veya sınıf adını HTML Etiketi'ne ekleyin. Div Öğelerinin düzenlenmesini önleyecektir.
İçindeki formunuz div
yalnızca form giriş öğeleri içeriyorsa, bu basit sorgu etiketin içindeki her öğeyi devre dışı bırakırform
:
<div id="myForm">
<form action="">
...
</form>
</div>
Bununla birlikte, etkileri yalnızca giriş türü öğelerinde görüleceğinden, öğeleri girmekten başka bir şey devre dışı bırakacaktırform
, bu nedenle her form türü için büyük ölçüde uygundur!
$('#myForm *').attr('disabled','disabled');
readOnly
devre dışı bırakmayın.