2013-08-07 4 views
8

मैं एक पत्र के रूप में'एक्शन' नामक एक फॉर्म में एक इनपुट फॉर्म की एक्शन प्रॉपर्टी को ओवरराइड करता है। क्या यह एक बग है?

<form class="form1" method="post" action="form1.php" style="width:405px"> 

आमतौर पर चिह्नित है, मैं जावास्क्रिप्ट में प्रपत्र वस्तु की .action का हवाला देते हुए, उदाहरण के

document.forms[0].action 

जो वापसी होगी के लिए फार्म की कार्रवाई का उपयोग कर सकता है मूल्य

form1.php 

हालांकि, अगर मेरे पास है, प्रपत्र के एक घटक के रूप में, एक आइटम नामित "कार्रवाई", इस "कार्रवाई" सामग्री हो जाता है फॉर्म की कार्रवाई का। यही कारण है,

<input name="action" type="hidden" value="check" /> 

फिर

document.forms[0].action 

रिटर्न मूल्य

<input name="action" type="hidden" value="check" /> 

अब है प्रपत्र मार्कअप उदाहरण के लिए, शामिल है,, मैं बाहर काम किया था इस के आसपास पाने के लिए: द्वारा

document.forms[0].getAttribute("action") 

हालांकि, यह एक है बुरा गेटचा जो मुझे बहुत लंबे समय तक भ्रमित कर देता था। क्या यह एक बग है? डीओएम प्रबंधन का ज्ञात गोचा? या मुझे बस .getAttribute() का उपयोग करने की आदत में जाना चाहिए?

+1

कोई बग नहीं, ब्राउज़र अनुकरण कर रहा है [आईई व्यवहार] (http://stackoverflow.com/q/1378155/1048572) जिसने 'फॉर्म [elementname]' शैली शुरू की - सही 'form.elements [elementname] होगा '। हालांकि मुझे इनपुट को छाया करने की विशेषता थी ... – Bergi

उत्तर

4

मैं इसे एक बग नहीं कहूंगा। यह प्रभाव होता है, क्योंकि element.attributename का उपयोग कर गुणों को पढ़ा जा सकता है और एक फॉर्म के अंदर नामित इनपुट को उसी तरह से एक्सेस किया जा सकता है, formelement.inputname। यदि एक ही नाम के साथ एक विशेषता और इनपुट है, तो कोई गारंटी नहीं है कि किस का उपयोग किया जाएगा। यह शायद विभिन्न ब्राउज़रों में अलग-अलग व्यवहार करता है।

मैं व्यक्तिगत रूप से getAttribute का उपयोग करता हूं यदि मैं मार्कअप में शामिल एक ज्ञात विशेषता पढ़ रहा हूं या जावास्क्रिप्ट में setAttribute का उपयोग करके जोड़ा गया हूं। गतिशील मानों के लिए, उदाहरण के लिए, checked चेकबॉक्स की विशेषता, मैं getAttribute का उपयोग नहीं करता हूं। लेकिन यह व्यक्तिगत वरीयता का एक सवाल है, मुझे लगता है।

+2

'getAttribute' का उपयोग करते समय एक अंतर यह है कि,' एक्शन 'प्रॉपर्टी के विपरीत, यह सापेक्ष यूआरएल वापस कर सकता है। – EricLaw

संबंधित मुद्दे