Функция setTimeout игнорируется при отправке, с кнопкой все в порядке - PullRequest
0 голосов
/ 13 декабря 2018

На самом деле мой код выглядит следующим образом:

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

Не работает предупреждение.Если я заменю кнопку отправки обычной кнопкой, она работает.Я не понимаю почему.Для меня очень важно использовать комбинацию submit с 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);
  });
});

Не могли бы вы помочь мне, почему он работает с обычной кнопкой, но не с отправки.

Большое спасибо.hovrcraft.

Ответы [ 3 ]

0 голосов
/ 13 декабря 2018

Попробуйте это:

<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>
0 голосов
/ 13 декабря 2018

Спасибо, приятель. Это сработало, как ты сказал.Теперь я попытался скопировать ваше решение в мой реальный случай.К сожалению, это не работает сейчас, так как мне нужно отправить значения на мой веб-сервер.

    $(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 после того, как я нажал на изображение.По прошествии 1000 мс я хочу, чтобы значение вернулось к 0.

Я вставил в код функцию protectDefault, но теперь кажется, что страница больше не обновляется и не отправляетзначение 1.

Ждем Вашего ответа.

BR, судно на воздушной подушке

0 голосов
/ 13 декабря 2018

Кнопка отправки отправит форму .

Таким образом, за две секунды, пока setTimeout ожидает оценки вашей строки, браузер покинул текущую страницу и загрузил новуюодин (с того же URL-адреса, поэтому он, вероятно, выглядит идентично).

Таймер не работает на новой странице, поэтому он не запускается там.

...