如何js禁用注释信息(nodes)

最近有朋友问到如何将注释能看不能写,即所谓的只读模式,其实这个可以通过权限来控制。但是朋友觉得这样设置太死板于是乎本人想出了另外一种做法。(最后根据描述的原理会给出一个更为直接的方法)

1.我们在我们的实体上再添加一个选项卡“注释”,如下图:

2.我们在这个选项卡里面建立一个新的“节”和“IFrame”,其中IFrame我们将其命名为“IFrame_nodes”,并设置iframe属性如下图:

 

 

3.将以下这段js脚本添加到这个实体的onlaod事件当中。

 

function disabled2()
{
    
if(IFRAME_nodes.document.readyState=="complete"
    { 
        
var NotesTable = window.frames['IFRAME_nodes'].document.getElementById('NotesTable');

        NotesTable.disabled 
= true;
        
var TextArea = NotesTable.getElementsByTagName('TEXTAREA');

        
for (i=0;i<TextArea.length;i++)
        {
            TextArea[i].disabled 
= true;
        }
    }
}


//crmForm.all.tab1Tab.style.display='none';
crmForm.all.notescontrol.attachEvent( "onreadystatechange",disabled); 
crmForm.all.IFRAME_nodes.attachEvent( 
"onreadystatechange",disabled2); 
var url=crmForm.all.notescontrol.Url;
url
=url.replace("EnableInlineEdit=true","EnableInlineEdit=false");
url
=url.replace("EnableInsert=true","EnableInsert=false");
crmForm.all.IFRAME_nodes.src
=url;

 

 

将实体发布,运行看看效果吧!

当我们希望在原有的注释基础上修改的时候,可以忽略上面的所有创建标签部分,只修改onload中的js代码为:

 

function disabled()
{
    
if(notescontrol.document.readyState=="complete"
    { 
window.frames[
'notescontrol'].document.getElementById("newNoteButton").style.display = 'none';
 
var NotesTable = window.frames['notescontrol'].document.getElementById('NotesTable');

NotesTable.disabled 
= true;
var TextArea = NotesTable.getElementsByTagName('TEXTAREA');

for (i=0;i<TextArea.length;i++)
{
    TextArea[i].disabled 
= true;
}
    }
}
crmForm.all.notescontrol.attachEvent( 
"onreadystatechange",disabled); 

 

 

posted @ 2009-04-21 16:02  zw3004  阅读(1032)  评论(0编辑  收藏  举报