Insider Javascript Sample

 avatar
unknown
javascript
5 months ago
4.6 kB
11
Indexable
<script>
    require([
        'jquery',
        'domReady!'
    ], function ($) {
        setTimeout(function () {
            $('#amform-form-76').on('submit', function (e) {
                e.preventDefault();

                const formDataArray = $(this).serializeArray();

                let fullname = '';
                let email = '';
                let phonenumber = '';
                let city = '';
                let address_line_1 = '';
                let address_line_2 = '';
                let race = '';  
                let gender = '';
                let dob = ''; 
                let gdpr_optin = true; 
                let country = '';
                let state = ''; 
                let postal = '';
                let sample_requestor = 'LIBRESSE® MAXI FIT TRIAL PACK (PAD & LINER)'; 

                formDataArray.forEach(field => {
                    switch (field.name) {
                        case 'full-name':
                            fullname = field.value;
                            break;
                        case 'email-address':
                            email = field.value;
                            break;
                        case 'phone-number':
                            phonenumber = field.value;
                            break;
                        case 'city':
                            city = field.value;
                            break;
                        case 'address-line-1':
                            address_line_1 = field.value;
                            break;
                        case 'address-line-2':
                            address_line_2 = field.value;
                            break;
                        case 'race':
                            race = $(`select[name="race"] option:selected`).text();
                            break;
                        case 'gender':
                            gender = $(`select[name="gender"] option:selected`).text();
                            break;
                        case 'dob':
                            let inputDate = new Date(field.value);
                            let year = inputDate.getFullYear();
                            let month = ('0' + (inputDate.getMonth() + 1)).slice(-2);
                            let day = ('0' + inputDate.getDate()).slice(-2);
                            dob = `${year}-${month}-${day}`;
                            break;
                        case 'country':
                            country = $(`select[name="country"] option:selected`).text();
                            break;
                        case 'state':
                            state = $(`select[name="state"] option:selected`).text(); 
                            break;
                        case 'postal':
                            postal = $(`select[name="postal"] option:selected`).text();
                            break;
                    }
                });

                window.insider_object = window.insider_object || {};
                window.insider_object.user = {
                    "gender": gender,
                    "birthday": dob,  
                    "gdpr_optin": true,  
                    "name": fullname,
                    "email": email,
                    "email_optin": true,
                    "phone_number": phonenumber,  
                    "sms_optin": true,
                    "whatsapp_optin": true,
                    "language": "en_US",
                    "state": state,
                    "city": city,
                    "custom": {
                        "address_line_1": address_line_1,
                        "address_line_2": address_line_2,
                        "race": race,
                        "country": country,
                        "postal": postal,
                        "sample_requestor": sample_requestor 
                    }
                };

                Insider.eventManager.dispatch('init-manager:re-initialize');

                const phoneNumberPattern = /^\+60(?!([0-9])\1+$)[0-9]{8,10}$/;
                if (!phoneNumberPattern.test(phonenumber)) {
                    return; 
                }

                $(this).find('button[type="submit"]').text('Submitting...').prop('disabled', true);

                setTimeout(() => {
                    this.submit();
                }, 3000);
            });
        }, 5000);
    });
</script>
Editor is loading...