zclip не работает в модале начальной загрузки
Я использую чистый пример кода, предоставленный страницей zclip:
$('a#copy-dynamic').zclip({
path:'js/ZeroClipboard.swf',
copy:function(){return $('input#dynamic').val();}
});
и это HTML:
<a href="#" id="copy-dynamic" class="">Click here to copy the value of this input:</a>
<input type="text" id="dynamic" value="Insert any text here." onfocus="if(this.value=='Insert any text here.'){this.value=''}" onblur="if(this.value==''){this.value='Insert any text here.'}">
Он отлично работает, если HTML находится внутри главной страницы начальной загрузки, но перестает работать, если я переместил HTML-код в модальное окно начальной загрузки (то есть внутри элемента div модального окна).
Как я могу заставить это работать?
2 ответа
У меня была та же проблема с моделями zclip и bootstrap. Исправление, которое я применил, было двойным:
- Прикрепите zclip к элементу внутри модальной функции 'show'.
- Добавьте задержку 250 мс, прежде чем прикреплять zclip к элементу.
Это правильно помещает zclip в модальное пространство. Это также работает, если у вас есть несколько вкладок в модальном.
HTML
<div id="myModal" class="modal hide fade">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3>Modal header</h3>
</div>
<div class="modal-body">
<a class="btn" href="#" id="modal_body_button">Copy Undo Config To Clipboard</a>
<p>One fine body…</p>
</div>
<div class="modal-footer">
<a href="#" class="btn">Close</a>
<a href="#" class="btn btn-primary">Save changes</a>
</div>
</div>
JavaScript
$('#myModal').on('show', function () {
$("#modal_body_button").delay(250).queue(function(next){
$(this).zclip({
path: "/static/javascript/ZeroClipboard.swf",
copy: "copied text OK!"
});
next();
});
});
В приведенном выше примере также можно использовать событие on('показанный') вместо on('show'), которое вызывается, когда модальный полностью показан. Это помогает предотвратить использование грязных хаков, таких как задержка (250)