यहाँ एक वैकल्पिक समाधान है मानते हैं कि jQuery उपलब्ध है। यदि आप jQuery के अलावा जेएस यूटिलिटी लाइब्रेरी का उपयोग करते हैं, या कोई लाइब्रेरी नहीं है, तो यह अभी भी संभव है। यह सिर्फ चुनिंदा एक्सचेंज इवेंट में एक फंक्शन बाध्यकारी है और जेएसन को कस्टम डेटा-एट्रिब्यूट से पार्स कर रहा है।
<form>
<select name="AnySelect">
<option value="primary-value0" data-support='["test",128,2014,"blackberry"]' />
<option value="primary-value1" data-support='["test1",39,2013,"apricot"]' />
<option value="primary-value2" data-support='["test2",42,2012,"peach"]' />
<option value="primary-value3" data-support='[null,null]' />
<option value="primary-value4" data-support='[30,28,null]' />
</select>
.
.
.
<span style="visibility: hidden" id="Support_AnySelect-container"><span>
</form>
^ मार्कअप ------- जावास्क्रिप्ट वी
//bind onchange once document is loaded and ready
$.ready(function(){ $('#TheSelector').on('change',UpdateHidden); });
function UpdateHidden(event)
{
//Create a base name for grouping dynamic values; ex: Support_AnySelect
Name='Support_'+SelectField.attr('name');
//Check if container was made for us already
Contain=$(this.parent).find('#'+Name+'-container');
if(Container.length===0) //make the container if missing
{
$(this).after('<span id="'+Name+'-container" style="visibility: none;"></span>');
Contain=$(this.parent).children('#'+Name+'-container');
}
//get our special multi-values, jQuery will auto decode the JSON
SupportValues = this.data('support');
Contain.empty(); //get rid of last select options
$.each(SupportValues,function(i,val)
{
Contain.append('<input type="hidden" name="'+Name+'['+i+'] value="'+val+'"/>');
});
}
इस का मुख्य लाभ यह है कि यह करना चाहिए, सिद्धांत रूप में, आप चर का एक 'चर राशि पोस्ट करते है 'फॉर्म से। आप कुछ नेस्टेड ऑब्जेक्ट्स के लिए स्क्रिप्ट को भी समायोजित कर सकते हैं। जब तक आप अपनी पसंद के डेटा-एट्रिब्यूट को वैध JSON में पास करते हैं।
अगर कोई ऐसा करने से पहले इसे बाहर कर देता है, तो कृपया मुझे बताएं। मैं बाद में इसका परीक्षण करूंगा लेकिन कुछ मामूली त्रुटियां हो सकती हैं। आपको किसी भी चुनिंदा तत्व पर इसका उपयोग करने में सक्षम होना चाहिए और छिपे हुए इनपुट स्वचालित रूप से किसी अन्य तत्व के अंदर आते हैं; स्क्रिप्ट को इन्हें आपके लिए एक ही फॉर्म टैग में होने और HTTP सरणी के माध्यम से अद्वितीय लेकिन समूहीकृत नाम होने की गारंटी भी देनी चाहिए।
स्रोत
2014-03-31 16:11:24
स्पष्ट करें। आप जो चाहते हैं उसका एक उदाहरण दें। – EFraim
कृपया स्पष्ट करें कि आप क्या चाहते हैं –
मैंने अपना प्रश्न स्पष्ट कर दिया है। क्षमा करें गलत तरीके से स्वरूपित HTML कोड तत्व पहले प्रदर्शित नहीं किए जा रहे थे। धन्यवाद –