0

在链接列表的 sharepoint 2010 新表单中,我创建了一个内容编辑器 webpart 并将此 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"/>
4

1 回答 1

0

我可以看到它可能有问题,因为在保存功能发生之前没有完成。如果可能,请尝试使用 an 覆盖按钮的默认提交处理程序,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));
    }
});
于 2012-07-24T16:54:23.093 回答