2015-03-16 3 views
0

Я пытаюсь скопировать текст в буфер обмена с помощью ZeroClipboard. Он работает хорошо, но только во втором клике по кнопке, а не при первом нажатии. Я видел несколько решений в Google, но никто из них не исправил мою проблему. Спасибо!JQuery - ZeroClipboard работает только во втором щелчке

$("body").on('click','.copyToClipboard', function (event) { 
var clientTarget = new ZeroClipboard($("#copy_to_clipboard"), { 

     moviePath: "js/ZeroClipboard.swf", 
     debug: false 
    }); 

    $('#copy_to_clipboard').attr('data-clipboard-text', texttocopy); 
    alert(texttocopy); 
    clientTarget.on("load", function(clientTarget) 
    { 
     $('#flash-loaded').fadeIn(); 

     clientTarget.on("complete", function(clientTarget, args) { 
      clientTarget.setText(args.text); 
      $('#data-to-copy-text').fadeIn(); 


     }); 
     alert(args); 
    }); 

}); 

ответ

1

Вы должны инициализировать буфер обмена за пределами вашей функции мыши, как,

var clientTarget = new ZeroClipboard($("#copy_to_clipboard").attr('data-clipboard-text',texttocopy),{ 
    moviePath: "js/ZeroClipboard.swf", 
    debug: false 
}).on("load", function(clientTarget){ 
    $('#flash-loaded').fadeIn(); 
    clientTarget.on("complete", function(clientTarget, args) { 
     clientTarget.setText(args.text); 
     $('#data-to-copy-text').fadeIn(); 
    }); 
    alert(args); 
}); 

// get the text only on click of .copyToClipboard 
$("body").on('click','.copyToClipboard', function (event) { 
    var texttocopy = $('#copy_to_clipboard').attr('data-clipboard-text'); 
    alert(texttocopy); 
}); 
+0

Это решение не работает. Текст по-прежнему не копируется при первом нажатии. @Rohan Kumar – user2026

+0

Вам нужно добавить атрибут для завершения события zeroclipboard, после чего вы можете войти в событие click. –

+0

Не могли бы вы отредактировать ответ с этим дополнением. Я не понимаю тебя точно @ Рохан Кумар. Большое спасибо! – user2026

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