如何在提交按钮上使用多个功能

How to use multiple functions on onsubmit button

我这里的主要问题是这个表单已经有一个重定向到页面的提交功能。与此同时,我忘记了验证,然后我尝试将这两个功能合二为一,但它只对名称有效。

所以现在它要求名称字段有效,并在按下提交按钮后跳到另一个 html 页面。本地和电子邮件,根本不起作用。

我需要设置验证配置方面的帮助,必须验证所有字段,必须选中单选按钮(至少一个),必须选中复选框(至少 3 个)才能有效。我不希望文本框要求验证,因为它只是一个观察字段。

如果有人能帮助我,我将不胜感激,在此先感谢。

body, html {
    margin:0;
    font:1em "Glegoo", slab-serif;
    background-color:#000;
}

h1 {
    color:#fff;
    text-align:center;
}

h2 {
    color:#fff;
}
h3 {
    color:#fff;
}

h4 {
    color:#fff;
}

legend {
    color:#fff;
}

fieldset{
    margin-left:150px;
    margin-right:150px;
    color:#fff;
}

.restodoformulario {
    margin-left:164px;
    margin-right:150px;
    color:#fff;
}

.domo p{
    margin: 0;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-right: -50%;
    transform: translate(-50%, -50%) 
}
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
            <title>musicUS</title>
   
            <link rel="stylesheet" href="form-main.css">
            <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Glegoo">
            <link rel="icon" href="backuplogo.png">
   
<script language="javascript">
    function dgi(el)
    {
        return document.getElementById(el);
    }
    var aYear = 100;
    window.onload = function()
    {
        var y = dgi('year');
        var d = new Date();
        var _y = d.getFullYear();

        var _o = document.createElement('option');
        _o.setAttribute('value', 0);
        _o.innerHTML = 'Ano';
        y.appendChild(_o);

        for(var i = 0; i < aYear; i++)
        {
            var o = document.createElement('option');
            o.setAttribute('value', _y);
            o.innerHTML = _y;
            y.appendChild(o);
            _y--;
        }
    }
    function loadMonths(obj)
    {
        if(obj.value != '0')
        {
            dgi('months').style.display = '';
        }
        else
        {
            dgi('months').style.display = 'none';
        }
    }
    function loadDays(obj)
    {
        var days = dgi('days');
                    
        if(obj.value != '0')
        {
            clearDays();
            var number = 32 - new Date(parseInt(dgi('year').value), parseInt(dgi('months').value)-1, 32).getDate();
                    
            for(var i = 1; i <= number; i++)
            {
                var o = document.createElement('option');
                o.setAttribute('value', i);
                o.innerHTML = i;
                days.appendChild(o);
            }
            days.style.display = '';
        }
        else
        {
            clearDays();
            hideDays();
        }
    }
    function clearDays()
    {
        var days = dgi('days');
        days.innerHTML = '';                
    }

    function hideDays()
    {
        var days = dgi('days');
        days.style.display = 'none';
    }

</script>
<script type="text/javascript">
    function outrofestival(val){
        var element=document.getElementById('festival');
        if(val=='Escolhe um festival'||val=='outro')
            element.style.display='block';
        else  
            element.style.display='none';
    }
</script> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js">
</script>
<script>
    jQuery(function(){
        var max = 3;
        var checkboxes = $('input[type="checkbox"]');

        checkboxes.change(function(){
            var current = checkboxes.filter(':checked').length;
            checkboxes.filter(':not(:checked)').prop('disabled', current >= max);
        });
    });
</script>
<script>
    function redirect() {
        window.location.replace("obrigado.html");
        return false;
        if(document.getElementById('nome').value=="") {
            alert ('Por favor preenche o teu nome.');
            return false;
        } else if(document.getElementById('local').value=="") {
            alert ('Por favor preenche a tua localidade.');
            return false;
        } else if(document.getElementById('email').value=="") {
            alert ('Por favor preenche o teu e-mail.');
            return false;
        }
    }
</script>
  
</head>
<body>
    <h1>
        <p>Diz-nos a que festival é que vais este verão!</p>
    </h1>
    <form method="post" id="formfest" action="#" onSubmit="return redirect()" >
        <fieldset>

        <legend><b>Sobre ti</b></legend>
            Nome Completo:
                <input type="text" size="30" maxlength="60" name="nome" required>
                <br>
            Sexo:
                <br>
                <input type="radio" name="sexo" value="feminino">Feminino
                &nbsp;
                <br>
                <input type="radio" name="sexo" value="masculino">Masculino
                &nbsp;
                <br>
                <input type="radio" name="sexo" value="naodefinido">Não definido
                <br>
            Data de Nascimento:
                <select id="year" onchange="loadMonths(this);"></select>
                <select id="months" style="display: none;" onchange="loadDays(this);">
                    <option value="0">Mês</option>
                    <option value="1">Janeiro</option>
                    <option value="2">Fevereiro</option>
                    <option value="3">Março</option>
                    <option value="4">Abril</option>
                    <option value="5">Maio</option>
                    <option value="6">Junho</option>
                    <option value="7">Julho</option>
                    <option value="8">Agosto</option>
                    <option value="9">Setembro</option>
                    <option value="10">Outubro</option>
                    <option value="11">Novembro</option>
                    <option value="12">Dezembro</option>
                </select>
                <select id="days" style="display: none;"></select>
                <br>
            Localidade:
                <input type="text" size="36" maxlength="60" name="local">
                <br>
            E-mail:
                <input type="text" size="41" maxlength="40" name="email">
                <p></p>
        </fieldset>

            <div class="restodoformulario">
            <p><b>Sobre os festivais</b></p>
            <p>Qual o festival que desperta mais o teu interesse para ires este verão?</p>
            <select name="festival" onchange='outrofestival(this.value);'>
                <option>Escolhe um festival</option>
                <option value="alive">NOS Alive</option>
                <option value="sbsr">Super Bock Super Rock</option>
                <option value="pdc">Vodafone Paredes de Coura</option>
                <option value="msw">MEO Sudoeste</option>
                <option value="edp">EDP CoolJazz</option>
                <option value="nps">NOS Primavera Sound</option>
                <option value="outro">Outro</option>
            </select>
            <p><input type="text" name="festival" id="festival" size="32" maxlength="60" style='display:none;'/></p>
            <p>Selecciona dos tópicos abaixo, os 3 aspectos mais apelativos de um festival</p>
            <input type="checkbox" name="aspectos" value="cartaz">Cartaz
            &nbsp;
            <br>
            <input type="checkbox" name="aspectos" value="campismo">Campismo
            &nbsp;
            <br>
            <input type="checkbox" name="aspectos" value="preço">Preço
            &nbsp;
            <br>
            <input type="checkbox" name="aspectos" value="acessos">Facilidades de acesso
            &nbsp;
            <br>
            <input type="checkbox" name="aspectos" value="ambiente">Ambiente
            &nbsp;
            <br>
            <input type="checkbox" name="aspectos" value="idade">Faixa etária do público
            &nbsp;
            <br>
            <input type="checkbox" name="aspectos" value="localização">Localização
            &nbsp;
            <br>
            <input type="checkbox" name="aspectos" value="segurança">Segurança
            &nbsp;
            <br>
            <input type="checkbox" name="aspectos" value="dimensão">Dimensão do festival
            &nbsp;
            <br>
            <input type="checkbox" name="aspectos" value="variedade">Variedade de conteúdos musicais
            &nbsp;
            <br>
            <input type="checkbox" name="aspectos" value="actividades">Actividades no festival
            &nbsp;
            <br>
            <p>Com quantas pessoas vais ao festival que escolheste?</p>
            <select size="3" style="height:100px;">
                <option>Vou sozinho.</option>
                <option>Com um amigo.</option>
                <option>Com 2 amigos.</option>
                <option>Com 3 amigos.</option>
                <option>Com 4 amigos.</option>
                <option>Com 5 amigos.</option>
                <option>Com 6 amigos.</option>
                <option>Com 7 amigos.</option>
                <option>Com 8 amigos.</option>
                <option>Vou trazer o acampamento.</option>
            </select>
            <br>
            <p>Porque recomendarias o festival que escolheste?</p>
            <textarea rows="8" cols="50" name="observacoes" style="text-indent: 3px">
            </textarea>
            <br>
            <a href="home.html"><input type="submit" name="enviar" value="Tá feito." ></a>
            <input type="reset" value="Limpar respostas.">
            <br><br><br>
        </div>
    </form>
    </body>
</html>

<form> 中删除 onSubmit="",然后使用 jQuery:

拦截提交
$("#myform").on("submit", function() {
  validate();

  if(is_good) {
    redirect();
  }
  return false;
});

然后您可以 运行 任意数量的函数。
这是一个简单的演示:https://jsfiddle.net/johnniebenson/c2n4gwjj/