我有一个弹出文件夹选择器的网页。它允许用户选择网站上的文件夹,然后跟踪对其内容的更改。
我需要传递弹出窗口中的值,该弹出窗口在JavaScript中返回给我,并将其传递给服务器端方法。
AJAX不适用于此,因为我正在使用SharePoint。
我通过JavaScript中的回调获取了所需的数据,但是如果我尝试设置$(control).text(),则不起作用。
我可以以某种方式设置标签的值(呈现为跨度)并将其传递回onClick吗?
当前正在运行的代码:
$('.tile').on("click", ".LibraryPickerInitiator", function () {
var hiddenField = $(this).siblings('[type=hidden]');
var callback = $.proxy(function (s) { this.val(s); }, hiddenField);
LaunchPickerTreeDialog('CbqPickerSelectListTitle', 'CbqPickerSelectListText', 'websLists', '', '/', '', '', '', '/_layouts/images/smt_icon.gif', '', callback, '', '');
});
标记:
<div id="WebSettings" class="WebSettings" runat="server">
<div class="LibraryPickerInitiator">Pick a Library</div>
<asp:HiddenField ID="HiddenField1" runat="server" />
<asp:Label ID="TreePickerLabel" CssClass="PickerPlaceHolder" runat="server" Text="No List Selected"></asp:Label>
<asp:Button ID="SubmitList" runat="server" Text="Get List Data" onclick="SubmitList_Click" />
</div>
事件:
protected void SubmitList_Click(object sender, EventArgs e)
{
string pickerData = HiddenField1.Value;
}
答案 0 :(得分:1)
我认为没有理由你不能,我会在创建回调时使用$.proxy
来确保适当的范围:
var callback = $.proxy(function (s) {
this.html(s);
}, sisterLabel);
如果向标记添加隐藏输入,则可以更改客户端代码,如下所示:
var sibs = $(this).siblings();
var callback = $.proxy(function (s) {
this.label.html(s); // set label text
this.hidden.val(s); // set hidden field val
}, { label: sibs.filter('span'), hidden: sibs.filter(':input:hidden') });