Почему действие формы вызывается перед правильной проверкой формы? - PullRequest
0 голосов
/ 25 сентября 2018
<script language="javascript">
    function startTime(){
        var today = new Date();
        var h = today.getHours();
        var m = today.getMinutes();
        var s = today.getSeconds();
        document.getElementById('time').innerHTML = "Current Time: " + h + 
        ":" + m + ":" + s;
        var t = setTimeout(startTime, 500);
    }

    function checkForAnswers(){
        alert('Hi');
        if((document.f1.q1[0].checked==false)&& 
        (document.f1.q1[1].checked==false)&& 
        (document.f1.q1[2].checked==false)&& 
        (document.f1.q1[3].checked==false))
            alert('Please attend all the questions!')
        else if((document.f1.q2[0].checked==false)&& 
        (document.f1.q2[1].checked==false)&& 
        (document.f1.q2[2].checked==false)&& 
        (document.f1.q2[3].checked==false))
            alert('Please attend all the questions!')
        else
            alert('Thanks');
    }

</script>
<body onload="startTime()">
    <p id="time"></p>
    <form action="results.php" method="post" name="f1">
    <p><b>Quiz</b></p>
    <p>1. What is the capital of India?</p>
    <input type="radio" name="q1" id="q1-A" value="A">Delhi<br/>
    <input type="radio" name="q1" id="q1-B" value="B">Chennai<br/>
    <input type="radio" name="q1" id="q1-C" value="C">Mumbai<br/>
    <input type="radio" name="q1" id="q1-D" value="D">Kolkata<br/>
    <p>2. What is the capital of USA?</p>
    <input type="radio" name="q2" id="q2-A" value="A">Miami<br/>
    <input type="radio" name="q2" id="q2-B" value="B">Houston<br/>
    <input type="radio" name="q2" id="q2-C" value="C">Washington DC<br/>
    <input type="radio" name="q2" id="q2-D" value="D">Palo Alto<br/>
    <br/>
    <input type="submit" value="Submit" id="button" onclick="checkForAnswers()">
    </form>
</body>

Я пытаюсь создать простое приложение, похожее на викторину, с использованием PHP, и чтобы проверить, ответили ли все вопросы, я написал функцию с именем checkForAnswers() и вызвал ее для кнопки onClick(), и она работает.(показывает предупреждение), но вместо того, чтобы остаться на той же странице, он переходит к results.php, где отображаются ошибки PHP.

Я также не могу использовать здесь кнопку вместо отправки из-за PHP.

Что мне теперь делать?Пожалуйста, помогите мне с этим!

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Попробуйте что-то вроде этого:

<script language="javascript">
    function startTime(){
        var today = new Date();
        var h = today.getHours();
        var m = today.getMinutes();
        var s = today.getSeconds();
        document.getElementById('time').innerHTML = "Current Time: " + h +
            ":" + m + ":" + s;
        var t = setTimeout(startTime, 500);
    }

    function checkForAnswers(e){    
        alert('Hi');
        if(!document.f1.q1.value) {
            alert('Please attend all the questions!');
            return false;
        }
        else if(!document.f1.q2.value) {
            alert('Please attend all the questions!')
            return false;
        }

        alert('Thanks');
        return true;
    }

</script>
<body onload="startTime()">
<p id="time"></p>
<form action="results.php" method="post" name="f1" onsubmit="return checkForAnswers();">
    <p><b>Quiz</b></p>
    <p>1. What is the capital of India?</p>
    <input type="radio" name="q1" id="q1-A" value="A">Delhi<br/>
    <input type="radio" name="q1" id="q1-B" value="B">Chennai<br/>
    <input type="radio" name="q1" id="q1-C" value="C">Mumbai<br/>
    <input type="radio" name="q1" id="q1-D" value="D">Kolkata<br/>
    <p>2. What is the capital of USA?</p>
    <input type="radio" name="q2" id="q2-A" value="A">Miami<br/>
    <input type="radio" name="q2" id="q2-B" value="B">Houston<br/>
    <input type="radio" name="q2" id="q2-C" value="C">Washington DC<br/>
    <input type="radio" name="q2" id="q2-D" value="D">Palo Alto<br/>
    <br/>
    <input type="submit" value="Submit" id="button">
</form>
</body>

Он запустит вашу функцию при отправке (вместо простого нажатия кнопки).Если функция возвращает false, она останется на странице с предупреждениями об ошибках, если нет, она будет отправлена.

0 голосов
/ 25 сентября 2018

Вы присваиваете свою функцию отправке формы и заставляете вашу функцию возвращать false.возвращает true, только если вы хотите продолжить

<form action="results.php" method="post" name="f1" onsubmit="return checkForAnswers()">

РЕДАКТИРОВАТЬ: return checkForAnswers () будет работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...