Home > Software engineering >  Perform a function after passing validation
Perform a function after passing validation

Time:12-04

I took the script from the Bootstrap 5 documentation and incorporated it into my script.

The validation itself works. However, I don't understand how I can start a function named webShare() in the script if the validation was successful.

function onl oad() {

    const forms = document.querySelectorAll('.needs-validation')

    Array.from(forms).forEach(form => {
        form.addEventListener('submit', event => {
            if (!form.checkValidity()) {
                event.preventDefault()
                event.stopPropagation()
            }
            form.classList.add('was-validated')
        }, false)
    })

    if (navigator.share === undefined) {
        setShareButtonsEnabled(false);
        if (window.location.protocol === 'http:') {
            // navigator.share() is only available in secure contexts.
            window.location.replace(window.location.href.replace(/^http:/, 'https:'));
        } else {
            logError('Error: You need to use a browser that supports this draft '  
                'proposal.');
        }
    }
}
window.addEventListener('load', onl oad);

The page should not be reloaded. Only the function "webShare()" must be executed.

Does anyone have a tip for me or a solution?

CodePudding user response:

To execute the webShare() function after successful form validation, you can add a call to webShare() at the end of the if statement that checks the form's validity. Here is an example of how you can do this:

function onl oad() {
    const forms = document.querySelectorAll('.needs-validation')

    Array.from(forms).forEach(form => {
        form.addEventListener('submit', event => {
            if (!form.checkValidity()) {
                event.preventDefault()
                event.stopPropagation()
            } else {
                // Call webShare() if the form is valid
                webShare();
            }
            form.classList.add('was-validated')
        }, false)
    })

    if (navigator.share === undefined) {
        setShareButtonsEnabled(false);
        if (window.location.protocol === 'http:') {
            // navigator.share() is only available in secure contexts.
            window.location.replace(window.location.href.replace(/^http:/, 'https:'));
        } else {
            logError('Error: You need to use a browser that supports this draft '  
                'proposal.');
        }
    }
}

window.addEventListener('load', onl oad);

Note that you need to define the webShare() function before calling it, otherwise you will get an error.

  • Related