3

在这个社区的帮助下,我已经能够将一段静态文本从 javascript(客户端)传递到 ASP 3.5(服务器端)!这段代码效果很好:

$('.drop').droppable({
    tolerance: "touch", // Here should be a string
    drop: function() {

    $('[id$="myHidden"]').val('Testy test test');
    __doPostBack('<%= HiddenButton.UniqueID  %>', '');
    alert($('[id$="myHidden"]').val());

    }


});

上面所做的是,当一个具有 .drop 类的元素被删除时,它会将字符串“Testy test test”分配给我的aspx页面上的隐藏字段。然后它回发到我在更新面板中的一个不可见按钮。隐藏按钮的点击事件触发,它会抛出一个显示隐藏元素内容的 msgbox,它总是“Testy test test”。

现在这是我遇到一些问题的地方。在我放入 dropzone 中的任何内容中,我不想将隐藏字段的值设置为静态字符串,而是将其设置为我放入 dropzone 中的任何内容的 ID。这是我改变的:

 $('[id$="myHidden"]').val($(ui.draggable).attr("id"));
    __doPostBack('<%= HiddenButton.UniqueID  %>', '');
    alert($('[id$="myHidden"]').val());

现在突然之间,当我放下一些东西时,它会粘在放置区上,并且不会触发任何放置事件。我弄坏了什么吗?还是我试图以错误的方式获取已删除元素的 ID?

如果它很重要,这里是相关的 aspx 页面内容:

<asp:Button ID="HiddenButton" runat="server" Text="Button" />         

该按钮通常通过 css 隐藏,我只是暂时不隐藏它以进行测试。

编辑!!!!:

我也试过这个,但它不起作用(所以我可以排除'var'的事情?)

var foo = $(ui.draggable).attr("id")
    $('[id$="myHidden"]').val(foo);
    __doPostBack('<%= HiddenButton.UniqueID  %>', '');
    alert($('[id$="myHidden"]').val());
4

1 回答 1

1

在您的 drop 函数中,您没有提供任何形式参数:

drop: function() { 

应该

drop: function(ev, ui) {

我在你的 drop 回调中猜测这个表达式:

$(ui.draggable).attr("id")

失败,因为无法在函数范围内引用 ui 对象。

于 2009-05-29T01:39:38.870 回答