Parsing XML into multiple form fields using Jquery -
what want do: i) parse xml data select option field ii) when user makes selection using option box, many more form fields populated relevant xml data based on user selection.
i have working adobe spry (what hear cry!!!) - currently, user selects option box contains data xml , example "american wigeon" when selected populates other form fields rest of xml, such "turdus migratorius" , on. if user changes mind , selects another, example "american robin", relevant xml bird populate form fields.
i have found answers on here getting parsed data select option, cannot work out next bit of using multiple fields.
my xml file looks (edited down 2 entries, approx 300 normally):
<?xml version="1.0" encoding="utf-8" ?> <bird> <result> <name>american wigeon</name> <latin>anas americana</latin> <rare>1</rare> <id>68</id> <breed>0</breed> <winter>0</winter> </result> <result> <name>american robin</name> <latin>turdus migratorius</latin> <rare>1</rare> <id>255</id> <breed>0</breed> <winter>0</winter> </bird>
i work in jquery can start add more functionality script.
any appreciated.
many thanks
mark
edit date:
i script written charlietfi , have tested on jsfiddle (many thanks) - having problems appending additional xml data form fields. example, if select american wigeon, want put additional xml data form fields, can submitted (so value of "rare" go text field")
i can sample text form field cannot selected additonal xml data in - code example below:
var xml = '<?xml version="1.0" encoding="utf-8" ?><bird><result><name>american wigeon</name><latin>anas americana</latin><rare>1</rare><id>68</id><breed>0</breed> <winter>0</winter></result><result><name>american robin</name><latin>turdus migratorius</latin><rare>1</rare><id>255</id><breed>0</breed><winter>0</winter> </result></bird>'; var $xml = $($.parsexml(xml)); $xml.find('result').each(function() { var data={} $(this).children().each(function() { data[this.tagname]=$(this).text(); }) $('#test').data( data.id, data).append('<option value="'+data.id+'">'+data.name+'</option>'); }); $('#test').change(function(){ var data=$(this).data( $(this).val()); var input = $( "#test2" ); // **this being name of text field** input.val( input.val() + "more text" ); alert('id:'+data.id +', name:'+ data.name); })
when script runs, select bird option, brings alert box expected plus inserted text field "more text" (used make sure gets added).
i stuck on how use" +data.id + " , #test2 many every ones , apologies if such simple thing missing.
following dynamically parse xml, creating both option , data object stored on select element using jquery data()
var $xml = $($.parsexml(xml)); $xml.find('result').each(function() { var data={}; /* loop on children of each "result create data object*/ $(this).children().each(function() { data[this.tagname]=$(this).text(); }); /* add data select , create option*/ $('#test').data( data.id , data).append('<option value="'+data.id+'">'+data.name+'</option>'); }); /* change handler select*/ $('#test').change(function(){ var data=$(this).data( $(this).val()); /* here make updates other fields */ alert('id:'+data.id +', name:'+ data.name); })
Comments
Post a Comment