Skip to content
14paxton edited this page Jul 14, 2023 · 4 revisions

get form data

const data = Object.fromEntries(new FormData(document.forms.requestForm).entries());
console.log(data)
document.querySelector('form').addEventListener('submit', (e) => {
    const data = Object.fromEntries(new FormData(e.target).entries());
    console.log(data)
});
formElem.onformdata = (e) => {
    console.log('formdata fired');
    console.log(e)
    return false
    // modifies the form data
};

formElem.addEventListener('submit', (e) => {
    // on form submission, prevent default
    // e.preventDefault();

    // construct a FormData object, which fires the formdata event
    const formData = document.getElementById('requestForm')
    console.log(formData)
    console.log(e.target)

    alert("fuck me")
    // return false
});
function handleSubmit(e) {
    e.preventDefault();
    const formData = new FormData(e.target);
    const formProps = Object.fromEntries(formData);
    console.log("submit", formProps)

}

const requestForm = document.getElementById("requestForm");
requestForm.addEventListener("submit", handleSubmit);
function myFunction() {
    var elements = document.getElementById("myForm").elements;
    var obj = {};
    for (var i = 0; i < elements.length; i++) {
        var item = elements.item(i);
        obj[item.name] = item.value;
    }

    document.getElementById("demo").innerHTML = JSON.stringify(obj);
}
const formData = new FormData(document.querySelector('form'))
for (var pair of formData.entries()) {
    // console.log(pair[0] + ': ' + pair[1]);
}

$("form").serializeArray()

manually set validity on form field

https://developer.mozilla.org/en-US/docs/Web/API/ValidityState

  1. with listener
var field = document.getElementById('field_robot');

field.addEventListener('input', function (event) {
    fieldValidator(event, (field.value == '42'));
});

function fieldValidator(event, condition) {
    var val = event.target.value;
    if (!condition) {
        event.target.setCustomValidity('invalid');
    }
    else {
        event.target.setCustomValidity('');
    }

}

<form id="myForm">
    <input type="text" id="field_robot" name="">
        <input type="submit" id="submit" name="submit">
</form>
  1. core use case
...
var email = emailInput.value;
emailInput.required = !!email.trim();
var reqAddRemove = emailInput.required
                   ? 'add'
                   : 'remove';

function setEmailInputValid() {
    emailInput.setCustomValidity('');
    errorBlock.html("").removeClass('emailValidationError').addClass('hidden');
    errorIcon.attr("class", "");
    errorIcon.parent().removeClass("has-error");
}

emailInput.previousElementSibling.classList[reqAddRemove]('req');

if (emailInput.required) {
    var inValidEmail = !AssessmentOrderEmailNotification.validateEmail(email);
    var inValidDomain = !AssessmentOrderEmailNotification.validateDomain(email);
    var respondentEmail = AssessmentOrderEmailNotification.respondentEmailCheck(email);

    if (inValidEmail || inValidDomain || respondentEmail) {
        emailInput.setCustomValidity('invalid');
        var errorMessage = inValidEmail
                           ? email + " is not a valid Email"
                           : (inValidDomain
                              ? email + " does not have a valid domain"
                              : "Error:  Email address cannot be the same as the assessment respondent.");
        errorBlock.html(errorMessage).removeClass('hidden').addClass('emailValidationError');
        errorIcon.attr("class", "glyphicon glyphicon-remove form-control-feedback");
        errorIcon.parent().addClass("has-error");
        event.target.previousSibling.classList.add('multi-input-height');
    }
    else {
        setEmailInputValid();
    }
}
else {
    setEmailInputValid();
}
...

Clone this wiki locally