Использование zClip при событии нажатия кнопки JQuery UI Dialog - PullRequest
3 голосов
/ 11 июля 2011

Я хочу использовать плагин jQuery zClip в диалоговой кнопке пользовательского интерфейса jQuery, но я не знаю, как адаптироваться в этом случае.Кто-нибудь может мне помочь?

Заранее спасибо!

    $.ajax({
        url: '/music/lyrics/' + hash,
        success: function (data) {
            data = jQuery.parseJSON(data);
            $('#dialog-modal').html(data.lyrics);
            $('#dialog:ui-dialog').dialog('destroy');
            $('#dialog-modal').dialog({
                modal: true,
                resizable: false,
                title: 'Lyric: ' + data.song,
                width: 500,
                height: 400,
                buttons: {
                    'Copy' : function () {
                         // use zClip to copy $('#dialog-modal').text() here
                     }
                }
            });
        },
        error: function (msg) {
            alert(msg);
        }
    });

Ответы [ 2 ]

3 голосов
/ 19 июля 2011

Я бы проигнорировал обычный способ, которым диалоговые кнопки обрабатывают действия, и отдельно использовал бы способ, которым zClip обрабатывает действия. Примерно так:

$.ajax({
        url: '/music/lyrics/' + hash,
        success: function (data) {
            data = jQuery.parseJSON(data);
            $('#dialog-modal').html(data.lyrics);
            $('#dialog:ui-dialog').dialog('destroy');
            $('#dialog-modal').dialog({
                modal: true,
                resizable: false,
                title: 'Lyric: ' + data.song,
                width: 500,
                height: 400,
                buttons: {
                    'Copy' : function () { return true; }
                }
            });
            $('#dialog-modal ui-button:contains(Copy)').zclip({
                path:'../whatever/ZeroClipboard.swf',
                copy:$('#dialog-modal').text()
            });
        },
        error: function (msg) {
            alert(msg);
        }
    });
1 голос
/ 09 ноября 2011

Предполагая, что вы используете jQuery 1.8+, вы можете указать свои кнопки по-другому, чтобы добавить к ним идентификаторы:

$("#mydialog").dialog({
  ...
  buttons : [{
    text: "Close",
    click: function() {
      $(this).dialog("close");
    }
  },{
    text: "Copy to clipboard",
    id: "copyButton", // here is your ID
    click : function() {
      alert("Sorry, copy not supported in your browser, please copy manually.");
    }
  }]
  ...
});

//after .dialog("open");
$("#copyButton").zclip({
  ...
  clickAfter: false // dont propagate click: will suppress unsupported warning
  ...
});

Единственная проблема, с которой я столкнулся, это то, что вы можете подключить zclipвидимые кнопки, поэтому я выполняю вызов zclip () внутри обработчика для кнопки, открывающей диалоговое окно

...