2013-09-04 13 views
12

मेरे पास एक फॉर्मडाटा ऑब्जेक्ट है जो मैं javascript में HTML फ़ॉर्म से बना हूं। FormData वस्तु बहुत अच्छी तरह से प्रलेखित प्रतीत नहीं होता है (यह सिर्फ मुझे गलत चीजों खोज हो सकता है!)।फॉर्मडेटा मानों तक पहुंच

var form = new FormData(document.getElementById("form")); 

मेरे प्रश्न

मैं इस FormData वस्तु के विभिन्न इनपुट मानों का उपयोग करते हैं इससे पहले कि मैं इसे बंद भेजें? उदाहरण के लिए। form.name मूल्य उस नाम form.name साथ निवेश में प्रवेश किया था एक्सेस करता है।

उत्तर

9

ऐसा लगता है कि आप FormData का उपयोग कर फ़ॉर्म तत्व के मान नहीं प्राप्त कर सकते हैं।

FormData वस्तु आप कुंजी/मान जोड़े का एक सेट संकलन XMLHttpRequest का उपयोग कर भेजने के लिए कर सकते हैं। इसके मुख्य रूप से प्रपत्र डेटा भेजने में इस्तेमाल के इरादे, लेकिन बंद डाटा संचारित करने के लिए रूपों से स्वतंत्र रूप से इस्तेमाल किया जा सकता। प्रेषित डेटा एक ही प्रारूप उस फ़ॉर्म का प्रस्तुत() विधि यदि प्रपत्र की एन्कोडिंग प्रकार करने के लिए "बहुखण्डीय/फार्म-डेटा" स्थापित किए गए डेटा भेजने के लिए प्रयोग करेंगे में है।

हालांकि आप इस

var formElements = document.forms['myform'].elements['inputTypeName'].value; 
+2

शर्म की बात है। फॉर्मडाटा से उन्हें पकड़ने के लिए बहुत अच्छा होगा। फिर भी धन्यवाद। – StuStirling

6

पहली बात की तरह साधारण जावास्क्रिप्ट का उपयोग कर इसे प्राप्त कर सकते हैं मैं इसे के रूप में आपके द्वारा निर्दिष्ट किसी फ़ॉर्म में कोई FormData वस्तु का निर्माण संभव है नहीं लगता है, और मूल्यों को प्राप्त करने के लिए फार्म से विधि स्वीकार किए जाते हैं जवाब में वर्णित का उपयोग करें - यह एक परिशिष्ट के और अधिक है!

ऐसा लगता है कि आप एक formdata वस्तु से बाहर कुछ डेटा प्राप्त कर सकते हैं:

var formData = new FormData(); 
formData.append("email", "[email protected]"); 
formData.append("email", "[email protected]"); 
formData.get("email"); 

दुर्भाग्य से, यह केवल पहले आइटम है कि कुंजी के लिए, वापस आ जाएगी इस मामले में यह वापस आ जाएगी में 'test1 @ test.com '

कृपया यह भी देखें: MDN article on formdata get method

आशा इस मदद करता है!

नोट:: संलग्न के अलावा अन्य तरीकों के लिए Chrome समर्थन वर्तमान में पीछे है "प्रायोगिक सक्षम

इसके अलावा सुविधाओं झंडा ध्यान दें कि आप प्रयोगात्मक वेब सक्षम करना होगा आप क्रोम में यह परीक्षण करना चाहते हैं, तो वेब प्लेटफ़ॉर्म झंडा विशेषताएं "।

MDN page; in the browser compatibility section

5

बस @Jeff डेज़ से पिछले समाधान में जोड़ने के लिए - आप वस्तु से सभी डेटा की पुनः प्राप्त करने के FormData.getAll ("कुंजी नाम") समारोह का उपयोग कर सकते ।

3

FormData.get ब्राउज़र के एक छोटे से सबसेट में जो भी आप चाहते हैं वह करेंगे - ब्राउज़र संगतता चार्ट को देखें कि कौन से हैं (वर्तमान में केवल क्रोम 50+ और फ़ायरफ़ॉक्स 39+)। इस फार्म को देखते हुए:

<form id="form"> 
    <input name="inputTypeName"> 
</form> 

आप के माध्यम से

var form = new FormData(document.getElementById("form")); 
var inputValue = form.get("inputTypeName"); 
0

यह है कि इनपुट के मूल्य का उपयोग कर सकते है एक समाधान FormData से कुंजी-मान जोड़ों को पुनः प्राप्त करने:

var data = new FormData(document.getElementById('form')); 
data = data.entries();    
var obj = data.next(); 
var retrieved = {};    
while(undefined !== obj.value) {  
    retrieved[obj.value[0]] = obj.value[1]; 
    obj = data.next(); 
} 
console.log('retrieved: ',retrieved); 
0

एक और समाधान:
एचटीएमएल:

<form> 
<input name="searchtext" type="search" >' 
<input name="searchbtn" type="submit" value="" class="sb" > 
</form> 

जेएस:

$('.sb').click(function() { 
    var myvar=document.querySelector('[name="searchtext"]').value; 
    console.log("Variable value: " + myvar); 
}); 
संबंधित मुद्दे