Como posso fazer uma caixa de diálogo do jQuery mostrar apenas depois de eu apertar um botão?
Pergunta
Este código é a partir da demonstração de confirmação modal no site jQuery.
<script type="text/javascript">
$(function() {
$("#dialog").dialog({
bgiframe: true,
resizable: false,
height:140,
modal: true,
overlay: {
backgroundColor: '#000',
opacity: 0.5
},
buttons: {
'Yes': function() {
$(this).dialog('close');
},
'No': function() {
$(this).dialog('close');
}
}
});
});
</script>
<div class="demo">
<div id="dialog" title="Empty the recycle bin?">
<p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>These items will be permanently deleted and cannot be recovered. Are you sure?</p>
</div>
<!-- Sample page content to illustrate the layering of the dialog -->
<div class="hiddenInViewSource" style="padding:20px;">
<p>Sed vel diam id libero <a href="http://example.com">rutrum convallis</a>. Donec aliquet leo vel magna. Phasellus rhoncus faucibus ante. Etiam bibendum, enim faucibus aliquet rhoncus, arcu felis ultricies neque, sit amet auctor elit eros a lectus.</p>
<form>
<input value="text input" /><br />
<input type="checkbox" />checkbox<br />
<input type="radio" />radio<br />
<select>
<option>select</option>
</select><br /><br />
<textarea>textarea</textarea><br />
</form>
</div><!-- End sample page content -->
</div><!-- End demo -->
<div class="demo-description">
<p>Confirm an action that may be destructive or important. Set the <code>modal</code> option to true, and specify primary and secondary user actions with the <code>buttons</code> option.</p>
</div><!-- End demo-description -->
Alguém pode me dizer como fazer esse show só depois de eu apertar um botão? Agora é automaticamente shows na página direita após o carregamento.
Solução
Certo ou errado, aqui está um exemplo de um diálogo estilo de alerta genérico que eu uso:
Defina a caixa de diálogo (no documento pronto):
$("#generic-dialog").dialog({
autoOpen: false,
buttons: {
Ok: function() {
$(this).dialog("close");
}
}
});
E abrir o diálogo (após algum evento):
$("#generic-dialog")
.text("Status updated successfully.")
.dialog("option", "title", "Your Status").dialog("open");
Outras dicas
Adicione o botão para a página e adicionar o código ao evento clique do botão.
<script type="text/javascript">
$(function() {
$("#button").click(function(){
$("#dialog").dialog({
bgiframe: true,
resizable: false,
height:140,
modal: true,
overlay: {
backgroundColor: '#000',
opacity: 0.5
},
buttons: {
'Yes': function() {
$(this).dialog('close');
},
'No': function() {
$(this).dialog('close');
}
}
});
});
});
</script>
e em HTML
<input type='button' value="click" id="button"/>
$("#btnTest").click(function() {
$('#dialog').dialog('open');
return false;
})
Isso deve abrir a janela que você definiu - atribui a função de abertura de diálogo para clicar evento de botão
Oh - e um conjunto autoOpen: false
nas propriedades de instalação de diálogo:)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow