Avec l'aide de cette communauté, j'ai pu faire passer un morceau de texte statique de javascript (côté client) à ASP 3.5 (côté serveur) ! Ce morceau de code fonctionne à merveille :
$('.drop').droppable({
tolerance: "touch", // Here should be a string
drop: function() {
$('[id$="myHidden"]').val('Testy test test');
__doPostBack('<%= HiddenButton.UniqueID %>', '');
alert($('[id$="myHidden"]').val());
}
});
Ce qui est fait ci-dessus, c'est que lorsqu'un élément avec la classe .drop est déposé, il attribue la chaîne "Testy test test" à mon champ caché sur ma page aspx. Ensuite, il effectue un postback vers un bouton invisible qui se trouve dans un panneau de mise à jour. L'événement de clic du bouton invisible se déclenche, ce qui fait apparaître une boîte de dialogue affichant le contenu de l'élément caché, qui est invariablement "Testy test test".
Maintenant, c'est là que j'ai quelques problèmes. De tout ce que je dépose dans la zone de dépôt, au lieu de définir la valeur du champ caché à une chaîne statique, je veux la définir à l'ID de ce que j'ai déposé dans la zone de dépôt. Voici ce que j'ai changé :
$('[id$="myHidden"]').val($(ui.draggable).attr("id"));
__doPostBack('<%= HiddenButton.UniqueID %>', '');
alert($('[id$="myHidden"]').val());
Maintenant, tout d'un coup, lorsque je laisse tomber quelque chose, il reste collé à la zone de largage, et aucun événement de chute ne se déclenche. Ai-je cassé quelque chose ? Ou est-ce que j'essaie d'obtenir l'ID de l'élément déposé de la mauvaise façon ?
Au cas où cela aurait de l'importance, voici la page aspx concernée :
<asp:Button ID="HiddenButton" runat="server" Text="Button" />
Ce bouton est généralement caché par css, je l'ai simplement laissé non caché pour le moment à des fins de test.
EDIT!!!! :
J'ai également essayé ceci, et cela ne fonctionne pas (je peux donc exclure le truc du 'var' ?).
var foo = $(ui.draggable).attr("id")
$('[id$="myHidden"]').val(foo);
__doPostBack('<%= HiddenButton.UniqueID %>', '');
alert($('[id$="myHidden"]').val());