我怎样才能延迟提交

How can I delay submit

我怎样才能延迟提交直到音频文件完成,因为当提交事件触发时页面刷新而不播放声音文件 我已经试过了,但没有用。

<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();  
    }
  }

您好,请尝试处理提交事件的 preventDefault:

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();  
    }
  }

您几乎已经准备好了所有需要的东西。这里的技巧是不要使用表单的提交按钮触发提交。而是添加一个简单的 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();
  }
}