2012-07-24 43 views
0

在一个链接列表中的SharePoint 2010中新的形式,我创建了一个内容编辑web部件和在把这个jQuery代码以获取附件文件的文件名(如果用户连接一个)。的SharePoint 2010 - jQuery的代码来获取附件名称

从本质上讲,我试图把一个链接列表到文档库,以便利用其项目的排序功能。

这是我使用的新form.aspx页面的代码:

<script type="text/javascript" src="jquery-1.7.2.min.js"></script> 

<script type="text/javascript"> 
    $('.ms-ButtonHeightWidth').eq(2).mousedown(function (event) { 
     var my_array = $(".ms-vb"); 
     for (var i=0; i<my_array.length; i++) { 
      text = $(my_array[i]).html(); 
      text = text.substring(1, text.length); 
      text = text.substring(text.indexOf(">")+1, text.indexOf("<")); 
      filename = text.substr(text.lastIndexOf("\\")+1); 
      document.getElementById('ctl00_m_g_0440ff9f_32fb_44b5_8b6d_a9055bcb9806_ctl00_ctl05_ctl03_ctl00_ctl00_ctl04_ctl00_ctl00_TextField_inplacerte').innerHTML = filename; 
     } 
    }); 
</script> 

它基本上把鼠标按下事件的保存按钮,改变一列字段的值,以附件的文件名。鼠标关闭,因为它需要在保存功能发生之前发生。 之后,会发生一个工作流并将此列字段值更改为文档的超链接。

我想知道,如果上面的代码有没有缺陷。我的意思是说它可以安全使用,而且不会破坏?目前它适用于我。

编辑:(这是在新的形式保存按钮的代码)

<input name="ctl00$m$g_0440ff9f_32fb_44b5_8b6d_a9055bcb9806$ctl00$toolBarTbl$RightRptControls$ctl00$ctl00$diidIOSaveItem" class="ms-ButtonHeightWidth" id="ctl00_m_g_0440ff9f_32fb_44b5_8b6d_a9055bcb9806_ctl00_toolBarTbl_RightRptControls_ctl00_ctl00_diidIOSaveItem" accessKey="O" onclick="if (!PreSaveItem()) return false;WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$m$g_0440ff9f_32fb_44b5_8b6d_a9055bcb9806$ctl00$toolBarTbl$RightRptControls$ctl00$ctl00$diidIOSaveItem", "", true, "", "", false, true))" type="button" target="_self" jQuery17203303955991604388="1" value="Save"/> 

回答

0

我能看到它可能通过之前保存功能发生没有完成有问题。如果可能,尝试使用event.preventDefault();覆盖该按钮的默认提交处理程序,然后在代码完成后调用默认提交功能。

编辑: 可能的工作代码:

$('.ms-ButtonHeightWidth').eq(2).click(function (event) { 
    // Stop default save function 
    event.preventDefault(); 

    // Add in filename of attachment 
    var my_array = $(".ms-vb"); 
    for (var i=0; i<my_array.length; i++) { 
     text = $(my_array[i]).html(); 
     text = text.substring(1, text.length); 
     text = text.substring(text.indexOf(">")+1, text.indexOf("<")); 
     filename = text.substr(text.lastIndexOf("\\")+1); 
     document.getElementById('ctl00_m_g_0440ff9f_32fb_44b5_8b6d_a9055bcb9806_ctl00_ctl05_ctl03_ctl00_ctl00_ctl04_ctl00_ctl00_TextField_inplacerte').innerHTML = filename; 
    } 

    // Run default save function 
    if (PreSaveItem()) { 
     WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$m$g_0440ff9f_32fb_44b5_8b6d_a9055bcb9806$ctl00$toolBarTbl$RightRptControls$ctl00$ctl00$diidIOSaveItem", "", true, "", "", false, true)); 
    } 
}); 
+0

我把上面的保存按钮的代码,你能告诉我如何做到这一点? – omega 2012-07-24 17:07:07

+0

尝试使用我上面编辑的代码。我将事件改为点击,然后停止默认的点击事件,然后运行您的代码。然后,我把你的按钮的onclick属性中的代码放在它的后面,这样它会运行。我希望按钮使用的ID不是真正动态的。 – Ben 2012-07-24 17:20:45