2016-05-31 2 views
0

У меня есть простое диалоговое окно подтверждения, которое откроется, когда клиент попытается отправить платеж. Если они нажмут «Отмена», он вернет их на страницу asp, чтобы повторно ввести их информацию, но если они нажмут «Отправить платеж», она погасит скрытую кнопку, которая вызывает метод в коде для обработки платежа. Проблема, с которой я сталкиваюсь, заключается в том, что некоторые клиенты, по-видимому, могут дважды щелкнуть кнопку «Отправить платеж» до закрытия диалогового окна. Есть ли что-нибудь, что я могу сделать на моей стороне, чтобы не нажимать кнопку дважды?Диалоговое окно JQuery Double Posting

<script type="text/javascript"> 
function ShowPaymentConfirmation() { 
    $(function() { 
     $("#dialog-ReviewPmt").dialog({ 
      resizable: false, 
      draggable: false, 
      dialogClass: "noclose", 
      closeOnEscape: false, 
      modal: true, 
      width: '650px', 
      "title": "Review Payment", 
      buttons: { 
       "Submit Payment": { "class": "SubmitPaymentDialogButton", click: function() { 
        this.disabled = true; 
        $(this).dialog("close"); 
        $("#<%=PaymentSubmit.ClientID%>").click(); 
       } 
       }, 
       "Cancel": { "class": "CancelRedDialogButton", click: function() { 
        $(this).dialog("close"); 
       } 
       } 
      } 
     }); 
    }); 
    return false; 
}; 

+0

Почему вы не можете просто отключить его при первом нажатии? – Bradley

+0

Вы хотите отключить скрытую кнопку или отключить кнопку диалога? Меня смущает то, что первое, что должна сделать эта кнопка, это закрыть диалоговое окно, поэтому мне интересно, насколько эффективны другие элементы управления на стороне клиента. Я также попытаюсь добавить ваше предложение в качестве дополнительной меры предосторожности, но, к сожалению, я не могу воспроизвести проблему, чтобы затруднить тестирование потенциальных исправлений. – CDurand

ответ

0

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

Возможно ли, что ваша функция ShowPaymentConfirmation() вызывается дважды?

+0

Я не считаю, что моя функция ShowPaymentConfirmation() вызывается дважды, потому что есть только одна кнопка, которая вызывает эту функцию. Воспроизведение проблемы - действительно моя самая большая проблема, но я думаю, что я придумал решение для предотвращения этого. Метод в коде позади берет информацию из переменной сеанса под названием «ReviewPayment» для обработки платежа. Я думаю, что я собираюсь добавить шаг, чтобы очистить «ReviewPayment», когда щелкнуть «Отправить платеж» и установить его на значение под названием «ConfirmPayment». Таким образом, значения не будут существовать для второго щелчка. – CDurand