Birkaç alanın görünürlüğünü değiştirdiğiniz bir formunuz olduğunu düşünün. Ve alan görüntülenmezse, değerinin istekte bulunmasını istemezsiniz.
Bu durumu nasıl idare ediyorsunuz?
Yanıtlar:
Bir form öğesini devre dışı bırakmak, sunucuya gitmesini durdurur, örneğin:
<input disabled="disabled" type="text" name="test"/>
Javascript'te şu anlama gelir:
var inputs = document.getElementsByTagName('input');
for(var i = 0;i < inputs.length; i++) {
if(inputs[i].style.display == 'none') {
inputs[i].disabled = true;
}
}
document.forms[0].submit();
JQuery'de:
$('form > input:hidden').attr("disabled",true);
$('form').submit();
.prop()
bunun yerine kullanılması .attr()
önerilir. Kontrol etmek ve / veya kullanarak ayarlamak .attr()
bazı durumlarda istenmeyen sonuçları döndürecektir. Lütfen yorch'un neyi kastettiği hakkında yorum yapmadan önce jQuery belgelerini okuyun.
Devre dışı bırakılan özniteliği ayarlamak için javascript kullanabilirsiniz. "Gönder" düğmesi tıklama etkinliği muhtemelen bunu yapmak için en iyi yerdir.
Ancak bunu yapmamayı tavsiye ederim. Mümkünse, sorgunuzu sunucuda filtrelemelisiniz. Bu daha güvenilir olacak.
Gizli bir ana öğedeki tüm öğeleri veya belirli öğeleri devre dışı bırakmak istiyorsanız, şunu kullanabilirsiniz:
$("div").filter(":hidden").children("input[type='text']").attr("disabled", "disabled");
Bu örnek http://jsfiddle.net/gKsTS/ , gizli bir div içindeki tüm metin kutularını devre dışı bırakır
Ne dersin:
$('#divID').children(":input").prop("disabled", true); // disable
ve
$('#divID').children(":input").prop("disabled", false); // enable
Gizli bir div içindeki tüm alt girişleri (seçimler, onay kutuları, giriş, metin alanları vb.) Değiştirmek için.
Çok basit (ama her zaman en uygun olmayan) bir çözüm, "ad" özniteliğini kaldırmaktır - standart, tarayıcıların adsız değerler göndermemesini ve bildiğim tüm tarayıcıların bu kurala uymasını gerektirir.
:input
yerineinput
sizin de kolayca devre dışı bırakabilirsinizselect
vetextarea
elemanları