Skip to content

Instantly share code, notes, and snippets.

@fatwebdev
Created May 19, 2017 09:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fatwebdev/c4c4ffc2a8919b1b33d21beea2440172 to your computer and use it in GitHub Desktop.
Save fatwebdev/c4c4ffc2a8919b1b33d21beea2440172 to your computer and use it in GitHub Desktop.
valid ne valid invalid
document.addEventListener("DOMContentLoaded", function(event) {
var body = document.querySelector('body');
body.classList.remove('is-preview');
var button = document.querySelector('[type=submit]');
button.setAttribute('disabled', '');
function isBlank(value) {
return value === null;
}
function getCheckboxValues() {
var checkboxesList = document.querySelectorAll('[type=checkbox]:checked');
var checkboxes = Array.prototype.slice.call(checkboxesList);
return checkboxes.map(function(item) {
return item.getAttribute('name');
});
}
function getRadioValue(selector) {
var radio = document.querySelector(selector + ':checked');
if (!radio) {
return null;
}
radio.value;
return radio.value;
}
function checkForm() {
var checkboxes = getCheckboxValues();
var seeCommercial = getRadioValue('.js-commercial [type=radio]');
var seeTVCommercial = getRadioValue('.js-tv-commercial [type=radio]');
var remember = getRadioValue('.js-remember [type=radio]');
var valid = !isBlank(seeCommercial)
&& !isBlank(seeTVCommercial)
&& !isBlank(remember)
&& checkboxes.length !== 0;
return {
checkboxes: checkboxes,
seeCommercial: seeCommercial,
seeTVCommercial: seeTVCommercial,
remember: remember,
valid: valid
};
}
var comment = document.querySelector('.js-form textarea');
var form = document.querySelector('.js-form');
form.addEventListener('click', function(e) {
var checkFormData = checkForm();
if (checkFormData.valid) {
button.removeAttribute('disabled');
} else {
button.setAttribute('disabled', '');
}
})
form.addEventListener('submit', function(e) {
e.preventDefault();
var checkFormData = checkForm();
var checkboxes = checkFormData.checkboxes;
var seeCommercial = checkFormData.seeCommercial;
var seeTVCommercial = checkFormData.seeTVCommercial;
var remember = checkFormData.remember;
var commentText = comment.value;
if (!checkFormData.valid) {
console.log('invalid');
} else {
var name = 'опрос';
var email = 'checklist@email.com';
var data = checkboxes.reduce(function(acc, item) {
acc[item] = 'true';
return acc;
}, {
seeCommercial: String(seeCommercial),
seeTVCommercial: String(seeTVCommercial),
remember: String(remember),
commentText: String(commentText)
});
widget.collectEmail(email, name, data);
widget.setScreen('polling-success');
}
});
widget.show();
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment