diff options
author | Struan Donald <struan@exo.org.uk> | 2011-10-20 18:03:34 +0100 |
---|---|---|
committer | Struan Donald <struan@exo.org.uk> | 2011-10-20 18:03:34 +0100 |
commit | 284b74472e30db0f1b1e82a4538f4bebfc0b67a5 (patch) | |
tree | 285df4f19696c0a798c87246350cbb594a2d5425 /web/js/fixmystreet.js | |
parent | c81eae7c7a4b7421333bc9031be024b7a973f942 (diff) |
make the additional information fields work with js update of category dropdown
Diffstat (limited to 'web/js/fixmystreet.js')
-rw-r--r-- | web/js/fixmystreet.js | 59 |
1 files changed, 34 insertions, 25 deletions
diff --git a/web/js/fixmystreet.js b/web/js/fixmystreet.js index 3d07c61ec..a0ea02437 100644 --- a/web/js/fixmystreet.js +++ b/web/js/fixmystreet.js @@ -3,6 +3,38 @@ * FixMyStreet JavaScript */ +function form_category_onchange() { + if ( category_extras ) { + if ( $('#category_meta').size() ) { + $('#category_meta').empty(); + } else { + $('#form_category_row').after( + '<div id="category_meta"></div>' + ); + } + if ( category_extras[this.options[ this.selectedIndex ].text] ) { + var fields = category_extras[this.options[ this.selectedIndex ].text]; + $('<h4>Additional information</h4>').appendTo('#category_meta'); + for ( var i in fields) { + var meta = fields[i]; + var field = '<div class="form-field">'; + field += '<label for="form_' + meta.code + '">' + meta.description + ':</label>'; + if ( meta.values ) { + field += '<select name="' + meta.code + '" id="form_' + meta.code + '">'; + for ( var j in meta.values.value ) { + field += '<option value="' + meta.values.value[j].key + '">' + j + '</option>'; + } + field += '</select>'; + } else { + field += '<input type="text" value="" name="' + meta.code + '" id="form_' + meta.code + '">'; + } + field += '</div>'; + $( field ).appendTo('#category_meta'); + } + } + } +} + $(function(){ $('html').removeClass('no-js').addClass('js'); @@ -59,31 +91,8 @@ $(function(){ timer = window.setTimeout(email_alert_close, 2000); }); - $('#form_category').change(function() { - if ( category_extras ) { - $('#category_meta').empty(); - if ( category_extras[this.options[ this.selectedIndex ].text] ) { - var fields = category_extras[this.options[ this.selectedIndex ].text]; - $('<h4>Additional information</h4>').appendTo('#category_meta'); - for ( var i in fields) { - var meta = fields[i]; - var field = '<div class="form-field">'; - field += '<label for="form_' + meta.code + '">' + meta.description + ':</label>'; - if ( meta.values ) { - field += '<select name="' + meta.code + '" id="form_' + meta.code + '">'; - for ( var j in meta.values.value ) { - field += '<option value="' + meta.values.value[j].key + '">' + j + '</option>'; - } - field += '</select>'; - } else { - field += '<input type="text" value="" name="' + meta.code + '" id="form_' + meta.code + '">'; - } - field += '</div>'; - $( field ).appendTo('#category_meta'); - } - } - } - }); + + $('#form_category').change( form_category_onchange ); // Geolocation if (geo_position_js.init()) { |