怎样用客户端JScript实现区域的只读属性
有些时候,我们需要把窗体(FORM)里的内容设计成只读(read-only)属性,用客户端编程的方式可以实现这个目的:
实施考虑因素:最简单的办法是可以遍历所有节点,把它们都disabled掉。这样做的缺点是TEXT区域背景会呈现灰色(#808080),显示效果不好(当然我们可以修改CSS文件改变背景,但这不是一个好的方法)。其实INPUT和TEXTAREA节点有一个属性是readOnly,这样既方便阅读,也能防止用户修改数据,是一个好办法。
所以我们可以readOnly掉INPUT和TEXTAREA,对于其他节点可以disabled掉。下面是代码,支持CRM 3.0/4.0
/*
setDisabled function
1. set readOnly property for INPUT/TEXTAREA nodes
2. disable other nodes
id: element's Id
ignoreNodes: nodes can be ignored
nodesDisabled: bool, true = set disable/readonly
*/
function setDisabled(id, ignoreNodes, nodesDisabled)
{
var node, nodes;
nodes = id.getElementsByTagName('*');
if(!nodes)
return;
var i = nodes.length;
while (i--)
{
node = nodes[i];
if(node.nodeName && !(node.nodeName.toLowerCase() in ignoreNodes))
{
if((node.nodeName == "INPUT") || (node.nodeName == "TEXTAREA"))
{
node.readOnly = nodesDisabled;
}
else
{
node.disabled = nodesDisabled;
}
}
}
}
/*disable/readonly fields*/
setDisabled(document.getElementById("areaForm"), {table:'', iframe:'', div:'', form:'', col:'', colgroup:'', lable:'', span:'', tbody:'', body:'', tr:'', td:''}, true);
/*disable IFRAME*/
try
{
window.setTimeout(iframeDisabled, 3000);
}
catch(err)
{
alert("System busy, please try again later!");
window.close();
}
function iframeDisabled()
{
setDisabled(document.frames("IFRAME_1").document.getElementById("mnuBar1"),{}, true);
}

浙公网安备 33010602011771号