2014-01-09 2 views
0

У меня возникла проблема с попыткой получить подтверждение в динамически созданной форме. Форма генерируется с информацией, возвращенной из вызова ajax. Эта HTML-страница отправляет форму в php-скрипт через ajax, и страница возвращает номер транзакции.
После ответа код ниже создает новую кнопку «Void Transaction» и форму, которая аннулирует предыдущую транзакцию.Подтверждение отправки формы в форме, созданной с помощью javascript

Все работает отлично, но я не могу найти способ сделать подтверждение (например, «Вы действительно хотите аннулировать последнюю транзакцию?») Перед нажатием новой кнопки.

<script> 
    $(document).ready(function() { 
     $('#looptransact').ajaxForm(function(response) { 
      document.getElementById("looptransact").reset(); 
      document.getElementById("areaCode").focus(); 

      jsonResponse = JSON.parse(response); 

       var voidForm = document.createElement("form"); 
        voidForm.method = "POST"; 
        voidForm.action = "VoidTransaction.php"; 

       var voidFormData = document.createElement("input"); 
        voidFormData.type = "hidden"; 
        voidFormData.name = "TransactionNumber"; 
        voidFormData.value = jsonResponse.TransactionNumber; 

       var voidFormButton = document.createElement("input"); 
        voidFormButton.type = "submit"; 
        voidFormButton.value = "Void Transaction"; 

       voidForm.appendChild(voidFormButton); 
       voidForm.appendChild(voidFormData); 

       placeholder = document.getElementById("VoidButton"); 
       placeholder.appendChild(voidForm); 

      document.getElementById("statusbox").innerHTML=jsonResponse.Response; 
      document.getElementById("TransactionNumber").innerHTML="Transaction Number: " +jsonResponse.TransactionNumber; 
     }); 
    }); 

Я предположил, что я мог бы добавить это к document.createElement("form") вызова:

voidForm.onsubmit = "return confirm('Are you sure you want to void this transaction?')" 

Но это не работает.

Вот эти HTML элементы, что населяет:

<div id="statusbox"></div> 
<div id="TransactionNumber"></div> 
<div id="VoidButton"></div> 

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

ответ

1

Вы можете изменить тип кнопки от представить кнопку, а затем добавить этот код:

voidFormButton.onclick = function() { 
    if (confirm('Are you sure you want to void this transaction?')) { 
     voidForm.submit(); 
    } 
} 
+0

Спасибо Дэвиду, что делает полный смысл и прекрасно работает. – Joe

+0

Обратите внимание, что иногда пользователь отправляет форму, нажимая enter из текстового поля, поэтому этот метод не работает. – xManh

+0

вместо voidForm.onsubmit = function() {/ ** /} ' – metadings

0

попробовать это:

$(voidForm).submit(function(){ 
    if(confirm('Do you want to subhmit?')) 
     return true; 
    else 
     return false; 
}); 
+0

@AaronBrager в JQuery представить() функция связывает представить событие в переданная ему функция. Форма по-прежнему должна быть отправлена ​​пользователем, а не этой функцией. – xManh

+0

Этот код работает для создания предупреждения, но не делает окно подтверждения. Если я использую «confirm» вместо «alert», форма отправляется независимо от того, нажимаю «Ok» или «Cancel». – Joe

+0

@Joe Я обновил код, чтобы форма была отправлена, только если пользователь нажмет «ОК» – xManh

Смежные вопросы