Как подождать 3 секунды до отправки формы? - PullRequest
2 голосов
/ 10 августа 2010

У меня есть следующий фрагмент кода:

function checkAmount() {
  var PayField = document.getElementById('paymentamount');
  var Pound = document.getElementById('pound');

  if (PayField.value == "") {
    PayField.style.border = '1px #F00 solid';
    Pound.style.color = '#F00';
    alert('You need to enter an amount that you wish to donate');

    return false;
  }
  return true;
}

Когда пользователь вводит действительную сумму и нажимает кнопку оплаты, форма должна ждать 3 секунды, а затем отправляется после ожидания 3 секунд.

Я пытался использовать setTimeout() с ним, но он не работает вообще.Я не хочу использовать jQuery с этим, вы можете предоставить мне код, как это сделать.

Ответы [ 2 ]

3 голосов
/ 10 августа 2010

Добавьте идентификатор в свою форму:

<form id="whatever">

Затем в вашем JavaScript:

var waited = false;
function checkAmount()
{
    var PayField = document.getElementById('paymentamount');
    var Pound = document.getElementById('pound');

    if (PayField.value == "")
    {
        PayField.style.border = '1px #F00 solid';
        Pound.style.color = '#F00';
        alert('You need to enter an amount that you wish to donate');

        return false;
    }
    if (waited)
    {
        return true;
    }
    waited = true;
    setTimeout(function() { document.getElementById('whatever').submit() }, 3000);
    return false;
}
2 голосов
/ 10 августа 2010

Рабочая демонстрация .

Допустим, ваша форма имеет идентификатор donationForm:

function checkAmount() {
  if (checkAmount.validated)
    return true;

  checkAmount.validated = false; //we will assign the property to the function itself. 
  var PayField = document.getElementById('paymentamount');
  var Pound = document.getElementById('pound');

  if (PayField.value == "") {
    PayField.style.border = '1px #F00 solid';
    Pound.style.color = '#F00';
    alert('You need to enter an amount that you wish to donate');

    return false;
  }

  setTimeout(function() {
    checkAmount.validated = true;
    document.getElementById('donationForm').submit();
  }, 3000);
  return false;
}
<form id='donationForm' onsubmit='return checkAmount();'>
...