отменить в форме отправки функции подтверждения в javascript

Получил форму, которая требует от пользователей ввода суммы для пожертвования. При нажатии кнопки «Отправить» вызывается функция, и функция предназначена для отображения указанной суммы и запроса пользователя на подтверждение того, является ли введенная сумма фактической суммой или нет.

Опция Cancel в Confirm() продолжает отправлять форму вместо возврата false.

function donationFormSend(){

    get_donation_amount = document.getElementById("get_donation_amt").value;

    if(get_donation_amount != ''){
        return confirm("You have specified "+get_donation_amount+" as the amount you wish to donate. \n\n Are you sure you want to proceed with the donation?");
    }
    else{
        alert("Amount must be specified to process your donation.");
        return false;   
    }

}    


<form method="post" action="">
<div>
      <div>Donation Amount:</div>
      <input name="amount" type="text" id="get_donation_amt" required="required" />
    </div>   
  <input name="donation_submit" type="submit" id="Submit" value="Proceed" onclick="return donationFormSend();" />
  </form>

ссылка Jsfiddle

Был бы рад получить помощь в этом.


person Ous    schedule 25.11.2014    source источник
comment
Почему бы вам просто не использовать ссылку, которая выглядит как отправка, но на самом деле таковой не является? таким образом, вам не нужно возиться слишком много. щелчок по нему показывает истинную отправку или что-то подобное   -  person Patrick    schedule 25.11.2014
comment
@Patrick - Вы имеете в виду что-то вроде изменения типа отправки формы с type = 'submit' на type = 'button' ... Это то, что вы предлагаете?   -  person Ous    schedule 25.11.2014
comment
@FelixKling - я добавил возврат в подтверждение (), но все еще не работает   -  person Ous    schedule 25.11.2014
comment
Ну, ваша скрипка настроена неправильно. Теперь это дубликат JavaScript, не работающего на jsfiddle.net.   -  person Felix Kling    schedule 25.11.2014


Ответы (2)


Я обновил ваш jsfiddle, чтобы он был в ожидаемом формате (загружая js в голову) и возвращая подтверждение результат

return confirm('blah blah')

отлично работает для меня в FF! Просто убедитесь, что вы очистили кеш и перезагрузили страницу.

person James Levett    schedule 25.11.2014

Способ сделать это может быть:

форма :

   <form id='test' method="post" action="">
    <div>
          <div>Donation Amount:</div>
          <input name="amount" type="text" id="get_donation_amt" required="required" />
     </div>   
      <input type="submit" value="submit" onClick="form_submit(this.value)">
    <input type="submit" value="cancel" onClick="form_submit(this.value)">
     </form>

JavaScript:

document.getElementById('test').addEventListener('submit',function (event) {
 if (event.preventDefault) { 
      event.preventDefault();
   } else {
      event.returnValue = false; 
   }
})

form_submit= function (submited_by) {

  if(submited_by == 'submit'){
    alert('Submited')
   }else if (submited_by == 'cancel'){
   alert('cancelled')  
  }

}  

Я бы предпочел использовать оператор switch, чтобы сделать его расширяемым в будущем, но это должно работать.

Также я использую jquery в основном потому, что не знаю, как без него остановить действие по умолчанию.

вот JSFiddle с работающим кодом.

РЕДАКТИРОВАТЬ: обновлено, чтобы не использовать Jquery.

РЕДАКТИРОВАТЬ: ну, теперь я чувствую себя глупо, понял, что это не кнопка отмены в форме отправки, а форма подтверждения.

person Thermatix    schedule 25.11.2014