2012-07-24 60 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