J'ai une boîte de dialogue jQuery UI qui fonctionne très bien sur ma page 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');
});
});
Ma div:
<div id="dialog" style="text-align: left;display: none;">
<asp:Button ID="btnButton" runat="server" Text="Button" onclick="btnButton_Click" />
</div>
Mais le btnButton_Click n'est jamais appelé ... Comment puis-je résoudre ce problème?
Plus d'informations: J'ai ajouté ce code pour déplacer div en forme:
jQuery("#dialog").parent().appendTo(jQuery("form:first"));
Mais toujours sans succès ...
Réponses:
Vous êtes proche de la solution, vous obtenez juste le mauvais objet. Cela devrait être comme ceci:
la source
L'utilisation de ce code a résolu mon problème et cela a fonctionné dans tous les navigateurs, Internet Explorer 7, Firefox 3 et Google Chrome. Je commence à aimer jQuery ... C'est un cadre sympa.
J'ai également testé avec un rendu partiel, exactement ce que je cherchais. Génial!
la source
FWIW, la forme: la première technique n'a pas fonctionné pour moi.
Cependant, la technique de cet article de blog:
http://blog.roonga.com.au/2009/07/using-jquery-ui-dialog-with-aspnet-and.html
Plus précisément, en ajoutant ceci à la déclaration de dialogue:
la source
Sachez qu'il existe un paramètre supplémentaire dans jQuery UI v1.10. Il y a un appendTo paramètre qui a été ajouté, pour répondre à la ASP.NET solution de contournement que vous utilisez pour ajouter de nouveau l'élément à la forme.
Essayer:
la source
La réponse de Ken ci-dessus a fait l'affaire pour moi. Le problème avec la réponse acceptée est qu'elle ne fonctionne que si vous avez un seul modal sur la page. Si vous avez plusieurs modaux, vous devrez le faire en ligne dans le paramètre "open" lors de l'initialisation de la boîte de dialogue, pas après coup.
Si vous faites ce que la première réponse acceptée vous dit avec plusieurs modaux, vous n'obtiendrez que le dernier modal sur la page qui fonctionne correctement, pas tous.
la source
C'est principalement parce que jQuery déplace la boîte de dialogue en dehors des balises de formulaire à l'aide du DOM . Remettez-le dans les balises du formulaire et cela devrait fonctionner correctement. Vous pouvez le voir en inspectant l'élément dans Firefox.
la source
Je ne voulais pas avoir à contourner ce problème pour chaque boîte de dialogue de mon projet, j'ai donc créé un simple plugin jQuery. Ce plugin sert simplement à ouvrir de nouvelles boîtes de dialogue et à les placer dans le formulaire ASP.NET :
Donc, pour utiliser le plugin, vous devez d'abord charger jQuery UI puis le plugin. Ensuite, vous pouvez faire quelque chose comme ceci:
Pour être clair, ce plugin suppose que vous êtes prêt à afficher la boîte de dialogue lorsque vous l'appelez.
la source
Je sais que c'est une vieille question, mais pour tous ceux qui ont le même problème, il existe une solution plus récente et plus simple: une option "appendTo" a été introduite dans jQuery UI 1.10.0
http://api.jqueryui.com/dialog/#option-appendTo
la source
Fantastique! Cela a résolu mon problème avec l'événement ASP: Button ne se déclenchant pas à l'intérieur de jQuery modal. Veuillez noter que l'utilisation du modal jQuery UI avec les éléments suivants permet à l'événement de bouton de se déclencher:
La ligne suivante est la clé pour que cela fonctionne!
la source
Je viens d'ajouter la ligne suivante après avoir créé la boîte de dialogue:
la source
C'était la solution la plus claire pour moi
Tout le contenu à l'intérieur du
dlg2
sera disponible pour être inséré dans votre base de données. N'oubliez pas de changer ladialog
variable pour qu'elle corresponde à la vôtre.la source
Avec ASP.NET, utilisez simplement
UseSubmitBehavior="false"
votre bouton ASP.NET:Référence: Button.UseSubmitBehavior, propriété
la source
La solution de Robert MacLean avec le plus grand nombre de votes est correcte à 99%. Mais le seul ajout que quelqu'un pourrait exiger, comme je l'ai fait, est chaque fois que vous devez ouvrir cette boîte de dialogue jQuery, n'oubliez pas de l'ajouter au parent. Comme ci-dessous:
var dlg = $('#questionPopup').dialog( 'open'); dlg.parent().appendTo($("form:first"));
la source
Utilisez cette ligne pour que cela fonctionne tout en utilisant l'option modal: true.
la source
La
$('#dialog').parent().appendTo($("form:first"))
solution fonctionne bien dans IE 9. Mais dans IE 8, elle fait apparaître et disparaître directement la boîte de dialogue. Vous ne pouvez pas voir cela sauf si vous placez des alertes, il semble donc que la boîte de dialogue n'apparaisse jamais. Je passe une matinée à trouver une solution qui fonctionne sur les deux versions et la seule solution qui fonctionne sur les deux versions 8 et 9 est:J'espère que cela aide d'autres personnes aux prises avec le même problème
la source
UseSubmitBehavior
valeur de la propriété Buttonfalse
. De cette façon , vous ne nécessitent pasappend
ouprepend
appels.Déplacez la boîte de dialogue dans le bon sens, mais vous ne devez le faire que dans le bouton ouvrant la boîte de dialogue. Voici du code supplémentaire dans l'exemple d'interface utilisateur jQuery:
Ajoutez votre
asp:button
à l'intérieur de la boîte de dialogue, et cela fonctionne bien.Remarque: vous devez remplacer le <bouton> par <type d'entrée = bouton> pour empêcher la publication après avoir cliqué sur le bouton "créer un utilisateur".
la source
La solution exacte est;
la source