aboutsummaryrefslogtreecommitdiffstats
path: root/account/static/js/account_profile_update.js
blob: 8a91e281cbb4e1705579cb740cf2ffdf9336f19c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/*
 * account_profile_update.js
 * for 'profile_update.html' template
 */

$(document).ready(function() {
    // modify styles of supplment textarea within 'mainform'
    $(".mainform textarea#id_supplement").attr('rows', 1);
    $(".mainform textarea#id_supplement").focus(function() {
        // show 5 rows when focused
        $(this).attr('rows', 5);
    }).blur(function() {
        // show only 1 row when unfocus
        $(this).attr('rows', 1);
    });

    // modify styles of file description textarea of subforms
    $(".subform textarea").attr('rows', 1);
    $(".subform textarea").focus(function() {
        // show 3 rows when focused
        $(this).attr('rows', 3);
    }).blur(function() {
        // show only 1 row when unfocus
        $(this).attr('rows', 1);
    });

    // remove 'required' attribute of subform
    $(".subform input").filter('[required]').removeAttr('required');

    // add-subform button
    // ref: http://stackoverflow.com/questions/501719/dynamically-adding-a-form-to-a-django-formset-with-ajax
    function cloneMore(selector, type) {
        var newElement = $(selector).clone(true);
        var total = $('#id_' + type + '-TOTAL_FORMS').val();
        newElement.find(':input').each(function() {
            // update name and id attributes
            var name = $(this).attr('name').replace('-'+(total-1)+'-', '-'+total+'-');
            var id = 'id_' + name;
            $(this).attr({'name': name, 'id': id}).val('').removeAttr('checked');
        });
        newElement.find('label').each(function() {
            // update for attributes if exists
            if ($(this).attr('for')) {
                var newFor = $(this).attr('for').replace('-'+(total-1)+'-', '-'+total+'-');
                $(this).attr('for', newFor);
            }
        });
        // remove 'has-success has-error' classes and help-block
        newElement.children().removeClass('has-success has-error');
        newElement.find('.help-block').remove();
        // update management_form settings
        total++;
        $('#id_' + type + '-TOTAL_FORMS').val(total);
        $(selector).after(newElement);
    }

    // Register the click event handlers
    $("#add-subform").click(function () {
        cloneMore('div.subform:last', 'userfile_set');
    });
});