Eu tenho uma caixa de diálogo jQuery UI funcionando muito bem na minha página ASP.NET:
jQuery(function() {
jQuery("#dialog").dialog({
draggable: true,
resizable: true,
show: 'Transfer',
hide: 'Transfer',
width: 320,
autoOpen: false,
minHeight: 10,
minwidth: 10
});
});
jQuery(document).ready(function() {
jQuery("#button_id").click(function(e) {
jQuery('#dialog').dialog('option', 'position', [e.pageX + 10, e.pageY + 10]);
jQuery('#dialog').dialog('open');
});
});
Minha div:
<div id="dialog" style="text-align: left;display: none;">
<asp:Button ID="btnButton" runat="server" Text="Button" onclick="btnButton_Click" />
</div>
Mas o btnButton_Click nunca é chamado ... Como posso resolver isso?
Mais informações: adicionei este código para mover div para o formulário:
jQuery("#dialog").parent().appendTo(jQuery("form:first"));
Mas ainda sem sucesso ...
Respostas:
Você está perto da solução, apenas obtendo o objeto errado. Deve ser assim:
fonte
O uso desse código resolveu meu problema e funcionou em todos os navegadores, Internet Explorer 7, Firefox 3 e Google Chrome. Começo a amar o jQuery ... É uma estrutura legal.
Também testei com renderização parcial, exatamente o que estava procurando. Ótimo!
fonte
FWIW, a forma: primeira técnica não funcionou para mim.
No entanto, a técnica nesse artigo do blog fez:
http://blog.roonga.com.au/2009/07/using-jquery-ui-dialog-with-aspnet-and.html
Especificamente, adicionando isso à declaração de diálogo:
fonte
Esteja ciente de que há uma configuração adicional na jQuery UI v1.10. Foi adicionada uma configuração appendTo , para resolver a solução alternativa do ASP.NET que você está usando para adicionar novamente o elemento ao formulário.
Experimentar:
fonte
A resposta de Ken acima fez o truque para mim. O problema com a resposta aceita é que ela só funciona se você tiver um único modal na página. Se você possui vários modais, precisará fazê-lo em linha no parâmetro "aberto" ao inicializar a caixa de diálogo, não após o fato.
Se você fizer o que a primeira resposta aceita informar com vários modais, você só obterá o último modal na página funcionando disparando postbacks corretamente, não todos.
fonte
Principalmente porque o jQuery move a caixa de diálogo para fora das tags de formulário usando o DOM . Mova-o de volta para dentro das tags de formulário e deve funcionar bem. Você pode ver isso inspecionando o elemento no Firefox.
fonte
Eu não queria ter que solucionar esse problema em todas as caixas de diálogo do meu projeto, então criei um simples plugin jQuery. Este plugin é apenas para abrir novas caixas de diálogo e colocá-las no formulário ASP.NET :
Portanto, para usar o plug-in, você primeiro carrega a interface do usuário do jQuery e depois o plug-in. Então você pode fazer algo como o seguinte:
Para ficar claro, este plug-in pressupõe que você está pronto para mostrar a caixa de diálogo quando a chama.
fonte
Sei que essa é uma pergunta antiga, mas para quem tem o mesmo problema, há uma solução mais nova e mais simples: uma opção "appendTo" foi introduzida no jQuery UI 1.10.0
http://api.jqueryui.com/dialog/#option-appendTo
fonte
Fantástico! Isso resolveu meu problema com o evento ASP: Button não sendo acionado dentro do jQuery modal. Observe que o uso do modal da interface do usuário do jQuery permite o acionamento do evento do botão:
A seguinte linha é a chave para fazer isso funcionar!
fonte
Acabei de adicionar a seguinte linha depois que você criou a caixa de diálogo:
fonte
Esta foi a solução mais clara para mim
Todo o conteúdo dentro dele
dlg2
estará disponível para inserção no seu banco de dados. Não se esqueça de alterar adialog
variável para corresponder à sua.fonte
Com o ASP.NET, basta usar
UseSubmitBehavior="false"
o botão ASP.NET:Referência: Propriedade Button.UseSubmitBehavior
fonte
A solução de Robert MacLean com maior número de votos está 99% correta. Mas a única adição que alguém pode exigir, como eu fiz, é sempre que você precisar abrir esse diálogo do jQuery, não se esqueça de anexá-lo ao pai. Como abaixo:
var dlg = $('#questionPopup').dialog( 'open'); dlg.parent().appendTo($("form:first"));
fonte
Use esta linha para fazer isso funcionar enquanto usa a opção modal: true.
fonte
A
$('#dialog').parent().appendTo($("form:first"))
solução funciona bem no IE 9. Mas no IE 8, a caixa de diálogo aparece e desaparece diretamente. Você não pode ver isso, a menos que coloque alguns alertas, de modo que parece que a caixa de diálogo nunca aparece. Passo uma manhã encontrando uma solução que funciona nas duas versões e a única solução que funciona nas versões 8 e 9 é:Espero que isso ajude outras pessoas que estão enfrentando o mesmo problema
fonte
UseSubmitBehavior
propriedade de Button comofalse
valor. Desta forma, você não precisa de nenhumappend
ouprepend
chamadas.Mova a caixa de diálogo da maneira certa, mas você deve fazê-lo apenas no botão que abre a caixa de diálogo. Aqui está um código adicional no exemplo da UI do jQuery:
Adicione o seu
asp:button
dentro da caixa de diálogo, e ele funciona bem.Nota: você deve alterar o <botão> para <tipo de entrada = botão> para impedir a postagem após clicar no botão "criar usuário".
fonte
A solução exata é;
fonte