2011-09-29 9 views
6

के VALUE विशेषता (और उसके मान) के साथ HTML फ़ॉर्म के आंतरिक HTML को पढ़ने के साथ मेरे पास कुछ इनपुट फ़ील्ड के साथ htmlform है।INPUT टैग्स

पढ़ने और document.ipForm.userName.value द्वारा input क्षेत्रों के मूल्यों भेजने के बजाय

, मैं एचटीएमएल पार्सर के लिए पूरे html सामग्री भेजने के लिए और (भी और अन्य जानकारी) किसी अन्य प्रोग्राम द्वारा प्रत्येक इनपुट क्षेत्र के <name ,value> जोड़ी को निकालने के लिए की जरूरत है।

लेकिन (मैं चाहता हूँ शुद्ध जावास्क्रिप्ट नहीं अन्य पुस्तकालय)

var contents=document.getElementById("formArea").innerHTML; 
alert(contents); 

यह शो<input/> की value="enteredValue" क्षेत्रों भले ही मैं कुछ मान दर्ज किया doesnot जब मैं जावास्क्रिप्ट में ऐसा किया।

मेरे HTML फ़ाइल:

<html> 
<head> 
    <script type="text/javascript"> 
    function showInnerHtml(){ 
     var contents=document.getElementById("formArea").innerHTML; 
     alert(contents); 
    } 
    </script> 
</head> 
<body> 
    <div id="formArea"> 
     <form name="ipForm" > 
      UserName : <input type="text" name="userName"> 
     </form> 
    </div> 
    <div> other contents..... </div> 
    <div onclick="showInnerHtml()">Show InnerHTML</div> 
</body> 
</html> 

Am मैं यहाँ कुछ कमी या यह संभव नहीं है।

मुझे एमएडी मत कहो। लेकिन मैं इस अजीब स्थिति से जूझ रहा हूं।

+2

का आनंद लें जहां तक मुझे पता है, 'value = "" 'st। In itemHTML पृष्ठ कभी लोड होने के बाद इनपुट फ़ील्ड में जो आपने दर्ज किया है उसे कभी भी प्रतिबिंबित नहीं करेगा। इसमें केवल तभी होगा जब पृष्ठ लोड होने पर मूल्य = "" में मौजूद था। –

+0

हां। तुम सही हो। – gtiwari333

उत्तर

11

ऐसा इसलिए है क्योंकि value एक संपत्ति है जब टेक्स्टबॉक्स भर जाता है, विशेषता नहीं। इसका मतलब है कि .value ठीक काम करता है, लेकिन यह वास्तविक DOM का एक विशेषता के रूप में नहीं है (जैसे <input value="...">)।

आपको इसे स्पष्ट रूप से सेट करने की आवश्यकता होगी: http://jsfiddle.net/BkjhZ/

var elems = document.getElementsByName("ipForm")[0].getElementsByTagName("input"); 

for(var i = 0; i < elems.length; i++) { 
    // set attribute to property value 
    elems[i].setAttribute("value", elems[i].value); 
} 
+0

यह काम किया। और http: //jsfiddle.net/के लिए धन्यवाद ... कभी नहीं सुना। सुंदर दिखाई देता है – gtiwari333

0

तुम भी एक इनपुट जो अपने आप में उसकी विशेषता बदल जाएगा, इस प्रकार लिख सकते हैं:

(...) 

UserName : <input type="text" name="userName" onChange="this.setAttribute('value', this.value);"> 

और चेक बॉक्स के लिए:

onClick="if (this.checked) { this.setAttribute('checked', null); } else { this.removeAttribute('checked'); }" 

:)

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