कल्पना कीजिए कि आपके पास एक ऐसा रूप है जहाँ आप कई क्षेत्रों की दृश्यता को बदलते हैं। और यदि क्षेत्र प्रदर्शित नहीं होता है, तो आप नहीं चाहते कि उसका मूल्य अनुरोध में हो।
आप इस स्थिति को कैसे संभालेंगे?
जवाबों:
अक्षम करने के लिए एक फार्म तत्व सेट करना सर्वर पर जाना बंद कर देगा, जैसे:
<input disabled="disabled" type="text" name="test"/>
जावास्क्रिप्ट में इसका मतलब कुछ इस तरह होगा:
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 में:
$('form > input:hidden').attr("disabled",true);
$('form').submit();
.prop()
करने के बजाय .attr()
अनुशंसित है। .attr()
कुछ मामलों में वसीयत की जाँच करना और उसका उपयोग करना अवांछित परिणाम लौटाएगा। कृपया इस बात पर टिप्पणी करने से पहले jQuery के दस्तावेज़ पढ़ें कि क्या यॉर्च का जिक्र था।
आप अक्षम विशेषता को सेट करने के लिए जावास्क्रिप्ट का उपयोग कर सकते हैं। 'सबमिट' बटन क्लिक इवेंट संभवतः ऐसा करने के लिए सबसे अच्छी जगह है।
हालांकि, मैं ऐसा करने के खिलाफ सलाह दूंगा। यदि संभव हो तो आपको सर्वर पर अपनी क्वेरी को फ़िल्टर करना चाहिए। यह अधिक विश्वसनीय होगा।
यदि आप छिपे हुए मूल तत्व के भीतर सभी तत्वों या कुछ तत्वों को अक्षम करना चाहते हैं, तो आप उपयोग कर सकते हैं
$("div").filter(":hidden").children("input[type='text']").attr("disabled", "disabled");
यह उदाहरण http://jsfiddle.net/gKsTS/ एक छिपे हुए div के भीतर सभी टेक्स्टबॉक्स को अक्षम करता है
व्हाट अबाउट:
$('#divID').children(":input").prop("disabled", true); // disable
तथा
$('#divID').children(":input").prop("disabled", false); // enable
एक छिपे हुए div के अंदर सभी बच्चों के इनपुट (चयन, चेकबॉक्स, इनपुट, टेक्सारैस आदि) को टॉगल करने के लिए।
एक बहुत ही सरल (लेकिन हमेशा सबसे सुविधाजनक नहीं) समाधान "नाम" विशेषता को हटाने के लिए है - मानक के लिए आवश्यक है कि ब्राउज़र अनाम मान न भेजें, और मेरे द्वारा ज्ञात सभी ब्राउज़र इस नियम का पालन करते हैं।
:input
बजायinput
आप भी आसानी से सभीselect
औरtextarea
तत्वों को निष्क्रिय कर सकते हैं