jquery弹出窗口替代我们在SharePoint中使用的javascript窗口解决方案

jquery popup alternative to javascript window solution we are using in SharePoint

本文关键字:窗口 javascript SharePoint 解决方案 我们 jquery      更新时间:2023-09-26

我们有一个自定义的asp.net web表单页面(由sharePoint生成)。该页面已经定制了一个按钮,该按钮使用javascript打开一个窗口,用于第二个asp.net页面的搜索和asp.net gridview选择过程。也许平台并不重要,但是第二个页面动态地生成javascript,以便将选定的信息从网格上的选定项发送到第一个页面的表单字段。代码在下面,确实工作得很好。

有人能建议一个jquery替代吗?我需要一个jquery插件,如果使用jquery从谷歌的网站。

理想情况下,我们想要的是弹出一个窗口,允许我们搜索外部数据源,然后从找到的条目中选择,并自动填充sharepoint表单列。我们的javascript代码确实有效。

<a href="javascript:PS=window.open('PS.aspx','PS','width=800,height=600,scrollbars=1');PS.focus()">
CLICK HERE TO SEARCH FOR PHYSICIAN
</a>
<script language="VB"  runat="server">
    Protected Sub PhysicianGrid_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles PhysicianGrid.SelectedIndexChanged
       'session("firstname") = PhysicianGrid.SelectedRow.Cells.Item(2).Text
       Dim strjscript as string = "<script language=""javascript"">"
       strjscript = strjscript & "passvalue('lastname','"+PhysicianGrid.SelectedRow.Cells.Item(1).Text+"');"
       strjscript = strjscript & "passvalue('firstname','"+PhysicianGrid.SelectedRow.Cells.Item(2).Text+"');"
       strjscript = strjscript & "passvalue('Phone','"+PhysicianGrid.SelectedRow.Cells.Item(8).Text+"');"
       strjscript = strjscript & "<" + "/script>"
       Literal1.text = strjscript
    End Sub
 </script>

window.opener是一个对象,指向打开当前窗口的任何窗口/选项卡。您不需要动态地生成javascript来来回传递值。一个简单的

window.opener.lastname = ...
window.opener.firstname = ...

应该在父窗口中设置这些值,然后调用一个函数来指示父窗口数据可用:

window.opener.dataIsReady();

将数据从父窗口传递到子窗口也是如此:

w = window.open(...);
w.somevar = somevalue;
w.someFunc();

你可以尝试使用jquery改进你的代码,如下所示;

为锚添加一个类名或id,并使用jquery附加click事件处理程序,而不是使用href.

<a class="searchPhysician" href="javascript:void(0);">CLICK HERE TO SEARCH FOR PHYSICIAN</a>

$(function(){
   $("a.searchPhysician").click(function(){
      var PS = window.open('PS.aspx','PS','width=800,height=600,scrollbars=1');
      PS.focus();//Sometimes in IE this will fail so its better you delay sometime and focus the window.
      //setTimeout(function(){
      //   PS.focus();
      //}, 200);
      return false;
   });
});