我必须单击两次按钮才能使onclick工作

时间:2020-03-18 13:12:00

标签: javascript html django redirect onclick

这是我的html和JS代码。当我第一次单击按钮时,它会提交表单,但不会调用onclick函数。我尝试过将onsubmit方法添加到表单中并使按钮类型为button。但是,这并没有任何改变。

表单提交适用于Django btw。

<form action='' method='GET' required id='form_id'>

     <input class='url_box' type='url' name='url_value' placeholder='Paste the URL...'/> <br>
     <button class='submit-btn' type='submit' onclick="delayRedirect()">Listen</button>

</form>

JavaScript

function delayRedirect(){

    setTimeout(function(){
        window.location = 'player';
    }, 1500);
} 

谢谢!

3 个答案:

答案 0 :(得分:0)

<form required id='form_id'>
     <input class='url_box' type='url' name='url_value' placeholder='Paste the URL...'/> <br>
     <button class='submit-btn'>Listen</button>
</form>

/ JS

const btn = document.querySelector('.sumbit-btn')

btn.addEventListener("click", (e)=>{
      e.preventDefault() // becuse the btn in <form></form> 
     // send to Django
})

答案 1 :(得分:0)

将按钮类型更改为按钮,并记录“已单击”。提交表单之前。

$('.submit-btn').click((e) => {
  console.log('clicked.');
  $('form').submit();
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action='' method='GET' required id='form_id'>

     <input class='url_box' type='url' name='url_value' placeholder='Paste the URL...'/> <br>
     <button class='submit-btn' type='button'>Listen</button>

</form>

答案 2 :(得分:0)

HTML

<form action='' target="you_dont_see_me" method='POST' required id='form_id'>

     <input class='url_box' type='url' name='url_value' placeholder='Paste the URL...'/> <br>
     <button class='submit-btn' type='button' onclick="delayRedirect()">Listen</button>

</form>
<iframe name="you_dont_see_me" style="display:none"></iframe>

JS

function delayRedirect(){
        document.getElementById('form_id').submit();
    setTimeout(function(){
        //do whatever you want
    }, 1500);
} 

您可以使用iframe,但是您的方法需要更改为POST。 我个人会使用ajax来处理这种情况