分享
三行代码  ›  专栏  ›  技术社区  ›  Stefano

如何延迟提交

  •  0
  • Stefano  · 技术社区  · 1 周前

    <form action="/game1/" method="POST" onsubmit="checkAnswer()">
            {% csrf_token %}
            <input type="hidden" name="UserSorce" id="us" >
            <button type="submit" class="btn btn-primary btn-circle btn-xl">
              Check
            </button>
          </form>
    
    function checkAnswer()
      {
        let tmp=document.getElementById("answer").innerText;
        if(correctAns==tmp)
        { 
            document.getElementById("result").src=picCorrect;
            document.getElementById("result").style.display="block";
            var audio = new Audio(soundCorrect);
            audio.play();
            audio.onended = function () {
              return true;
            }
        }else{
            document.getElementById("result").src=picIncorrect;
            document.getElementById("result").style.display="block";
            var audio = new Audio(soundIncorrect);
            audio.play();  
        }
      }
    
    2 回复  |  直到 1 周前
        1
  •  2
  •   obscure    1 周前

    你需要的东西几乎都准备好了。这里的技巧是不要使用表单的提交按钮触发提交。而是添加一个简单的html按钮 checkAnswer() .

    内部 checkAnswer() 功能您已经在收听音频的 onended 事件。如果发生了这种情况,你最终可以使用 submit() 功能。

    <form id="myForm" action="/game1/" method="POST">
      <input type="hidden" name="UserSorce" id="us">
    </form>
    <button onclick="checkAnswer()">
      Check
    </button>
    

    function checkAnswer() {
      let tmp = document.getElementById("answer").innerText;
      if (correctAns == tmp) {
        document.getElementById("result").src = picCorrect;
        document.getElementById("result").style.display = "block";
        var audio = new Audio(soundCorrect);
        audio.onended = function() {
          document.getElementById("myForm").submit();
        }
        audio.play();
    
      } else {
        document.getElementById("result").src = picIncorrect;
        document.getElementById("result").style.display = "block";
        var audio = new Audio(soundIncorrect);
        audio.play();
      }
    }
    
        2
  •  0
  •   Ed Rebolledo    1 周前

    请尝试处理提交事件的默认值:

    function checkAnswer(e)
      {
    
        e.preventDefault();
    
        let tmp=document.getElementById("answer").innerText;
        if(correctAns==tmp)
        { 
            document.getElementById("result").src=picCorrect;
            document.getElementById("result").style.display="block";
            var audio = new Audio(soundCorrect);
            audio.play();
            audio.onended = function () {
              return true;
            }
        }else{
            document.getElementById("result").src=picIncorrect;
            document.getElementById("result").style.display="block";
            var audio = new Audio(soundIncorrect);
            audio.play();  
        }
      }