setTimeout函数在提交时被忽略,通过按钮一切都很好

时间:2018-12-13 15:41:04

标签: jquery html button submit settimeout

实际上我的代码如下:

<form method="post" action="" id="form">
  <input type="submit" value="Anlage Ein" id="power_off" title="Anlage Ein">
</form>
$(document).ready(function() {
  $("#power_off").click(function() {
    setTimeout("alert('Boom!');", 2000);
  });
});

显示警报不起作用。如果我用一个普通的按钮替换提交,它的工作。我不明白为什么。对我来说,将提交与setTimeout结合使用非常重要。 以下代码有效:

<form method="post" action="" id="form">
  <input type="button" value="Anlage Ein" id="power_off" title="Anlage Ein">
</form>
$(document).ready(function() { 
  $("#power_off").click(function(){
    setTimeout("alert('Boom!');", 2000);
  });
});

请帮助我,为什么它可以使用普通按钮,但不能使用提交按钮?

非常感谢。 飞机。

3 个答案:

答案 0 :(得分:1)

一个提交按钮将提交表单

因此setTimeout在等待评估字符串之前等待的两秒钟内,浏览器已离开当前页面并加载了新页面(来自相同的URL,因此看起来可能完全相同)。

计时器不在新页面中运行,因此不在新页面中执行。

答案 1 :(得分:0)

谢谢你的交配, 就像你说的那样工作。 现在,我已尝试将您的解决方案复制到我的真实案例中。不幸的是,它现在无法正常工作,因为我需要将值发送到Web服务器。

    $(document).ready(function(){ 

    $("#power_off").click(function(e){
    e.preventDefault()
    $('#wert1').val('1');
    setTimeout(function(){
    $('#wert1').val('0');},1000);
    });

});

    <form method="post" action="" id="form">
            <input type="image" src="" value="" id="power_off" title="Anlage Ein">
            <input type="hidden" name='"DBEHmi".AnlageEin' value="" id="wert1" >
    </form>

如您所见,我想在单击图像后发送值1。经过1000ms的时间后,我希望该值恢复为0。

我已经在代码中插入了preventDefault函数,但是现在看来该页面不再刷新,也不再发送值1。

期待您的回复。

BR, 气垫船

答案 2 :(得分:-1)

尝试一下:

<script>
$(document).ready(function(){ 

    $("#power_off").click(function(e){
      e.preventDefault()
      setTimeout("alert('Boom!');", 2000);
    });
});
</script>
</head>
<body>
    <form method="post" action="" id="form">
            <input type="submit" value="Anlage Ein" id="power_off" title="Anlage Ein">
    </form>
</body>