диалоговое окно подтверждения пользовательского интерфейса jQuery и обратная передача asp.net - PullRequest
3 голосов
/ 18 ноября 2009

У меня есть кнопка удаления в сетке. Для тех, кто не знаком с asp.net, моя кнопка удаления выводит примерно так:

<a id="ctl00_cp1_dtgrAllRates_ctl02_lbDelete" 
   class="lb"
   href="javascript:__doPostBack('ctl00$cp1$dtgrAllRates$ctl02$lbDelete','')">
Delete</a>

У меня есть диалоговое окно подтверждения, подключенное ко всем ссылкам на удаление в сетке, чтобы спросить пользователя, уверены ли они, что хотят удалить. Это не проблема, но я хочу запустить обратную передачу (значение href), если они нажимают подтвердить. Я не уверен, как это сделать, так как код диалога отделен от ссылки, по которой щелкают, поэтому я не могу просто взять ссылку на «this», например,

var theID = $(this).attr("href");

и уволить это. Есть ли способ передать href val в качестве параметра к диалоговому коду или что-то подобное, чтобы раздел «Подтвердить удаление» использовал его при нажатии кнопки и при нажатии «Отмена» диалоговое окно просто закрывается?

Вот мой код jQuery:

$(document).ready(function(){
    $("#dialog").dialog({
      bgiframe: true,
      autoOpen: false,
      width: 400,
      height: 200,
      modal: true,
      buttons: {
                'Confirm Delete': function() {
                    $(this).dialog('close');
                    //fire href here preferably
                    },
                Cancel: function(){
                    $(this).dialog('close');
                    }
            }
    });

    $(".lb").click(function(event){
        $("#dialog").dialog('open');
        event.preventDefault();
    });

});

1012 * ТИА *

Lloyd

Ответы [ 3 ]

6 голосов
/ 19 ноября 2009

Хорошо, удалось решить. Я наткнулся на этот пост, который немного помог:

Как реализовать диалоговое окно «Подтверждение» в диалоговом окне интерфейса пользователя Jquery?

Однако пример, приведенный в посте, работал не совсем просто, потому что создание экземпляра диалога было некорректным в обработчике кликов. Существует другой способ установки свойств / опций в диалоге, когда диалог уже создан. Итак, мой окончательный код был:

$(document).ready(function(){

$("#dialog").dialog({
  modal: true,
        bgiframe: true,
        width: 500,
        height: 200,
  autoOpen: false
  });


$(".lb").click(function(e) {
    e.preventDefault();
    var theHREF = $(this).attr("href");


    $("#dialog").dialog('option', 'buttons', {
            "Confirm" : function() {
                window.location.href = theHREF;
                },
            "Cancel" : function() {
                $(this).dialog("close");
                }
            });

    $("#dialog").dialog("open");

});

});

Надеюсь, это поможет кому-то еще. Гурдас, спасибо за вашу помощь, это определенно заставило вращаться механизмы. :)

3 голосов
/ 18 ноября 2009

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

 $(".lb").click(function(event){    

      var theHREF = $(this).attr("href");



       $("#dialog").dialog({
      bgiframe: true,
      autoOpen: false,
      width: 400,
      height: 200,
      modal: true,
      buttons: {
                'Confirm Delete': function() {

                    //href fired here
                    window.location.href= theHREF; 

                    },
                Cancel: function(){
                    $(this).dialog('close');
                    }
            }    

    }).dialog('open');
0 голосов
/ 25 апреля 2011

Несколько раз назад я создал веб-элемент управления , чтобы сделать это стандартным интегрированным способом. Посмотри.

...