我有一个SharePoint列表,它包含一个“标题”字段作为单行文本,一个“冻结”字段作为复选框。
在编辑表单中,当我选中“冻结”时,我希望“编辑表单”中的“标题”字段为只读。
我尝试将以下java脚本代码放在“内容编辑器Web部件”中,并且它在一定程度上起作用,存在以下问题:
对于问题1,我在下面添加了一行,将该字段显示为“只读”字段。
ele[index].className = "ms-HoverCellInActive";
对于问题2,除非我将“标题”字段作为表单中的第二个字段 - 这使得表单有点难看,我无法将其设置为“只读”。
有什么建议吗?
代码:
<script type="text/javascript">
function MakeReadOnly(){
var elm=document.body.getElementsByTagName("input");
for (index=0; index < elm.length; ++index) {
if(elm[index].type=="checkbox"){
if(elm[index].title=="Frozen"){
var iFz=index;
break;
}
}
}
var ele=document.body.getElementsByTagName("input");
for (index=0; index < ele.length; ++index) {
if(ele[index].type=="text"){
if(ele[index].title=="Title"){
if(elm[iFz].checked){
ele[index].readOnly=elm[iFz].checked;
ele[index].className = "ms-HoverCellInActive";
break;
}
}
}
}
}
_spBodyOnLoadFunctionNames.push("MakeReadOnly");
</script>
答案 0 :(得分:0)
我可能会在禁用输入元素时使用disabled =“disabled”,但我相信你也可以使用setAttribute(“readOnly”,“true”)。
ele[index].setAttribute("disabled", "disabled");
答案 1 :(得分:0)
使用jquery
尝试此操作$(document).ready( function () {
$("input[name='Frozen']").prop("checked","true");
$("input[name='title']").attr("disabled","disabled");
});
答案 2 :(得分:0)
我强行关注另一个领域,这解决了问题2.
elm[iFz].focus();
顺便说一句,我不能使用&#34;禁用&#34;属性是,当你点击&#34;标题&#34;的值时字段丢失,更糟糕的是,如果&#34;标题&#34;字段设置为&#34;要求此列包含信息&#34;,您无法保存条目。
完整的代码如下,
<script type="text/javascript">
function MakeReadOnly(){
var elm=document.body.getElementsByTagName("input");
for (index=0; index < elm.length; ++index) {
if(elm[index].type=="checkbox"){
if(elm[index].title=="Frozen"){
var iFz=index;
break;
}
}
}
var ele=document.body.getElementsByTagName("input");
for (index=0; index < ele.length; ++index) {
if(ele[index].type=="text"){
if(ele[index].title=="Title"){
if(elm[iFz].checked){
ele[index].readOnly=elm[iFz].checked;
ele[index].className = "ms-HoverCellInActive"; //set the read only look and feel
elm[iFz].focus(); // set focus to another field
break;
}
}
}
}
}
_spBodyOnLoadFunctionNames.push("MakeReadOnly");
</script>