Jquery解决sharepoint 2010 查阅项的默认值为空,但要求为必填
方案一:将查阅项设为必填,在显示页面插入一个空的option,可发现即使设为默认,也不能改变默认显示内容,故放弃
方案二:将查阅项设为不必填,实现如下:
1、实现列名后面红色的“*”
<script type="text/javascript">
$(document).ready(function(){ var value_s=$('select').length; var value_td = $("td:contains('补充说明')").length; if(value_s>0&value_td>0){ var self_td = $("td:contains('重要度')").last(); self_td.each(function(){ $(this).html("<h3 class='ms-standardheader'><nobr>重要度<span class='ms-formvalidation' title='这是必填字段。' > *</span></nobr></h3>"); }); } });
</script>
2、在提交前判断查阅项与其他字段是否已经填写,若没,则出现“必须为此必填字段指定值。”语句
<script type="text/javascript">
function PreSaveAction() { var str = $("select[title='重要度']").val(); var value_s=$('select').length; var value_td = $("td:contains('补充说明')").length; if(value_s>0&value_td>0){ if(str=="0"){ var self_td1 = $("td:contains('★')").last(); self_td1.each(function(){ if($(this).text().indexOf('必须')<0) $(this).append("<span style=\"color:red;\">必须为此必填字段指定值。</span><br/>"); }); var select_m = $("select[multiple='multiple']"); var input_n = $("input[title='名称']"); if(input_n.val()=="") { var input_td = $("input[title='名称']").parent().text(); if(input_td.indexOf('必须')<0) $("input[title='名称']").parent().append("<br/><span style=\"color:red;\">必须为此必填字段指定值。</span>"); } else { //alert($("input[title='名称']").parent().text()); $("input[title='名称']").parent().text().replace("必须为此必填字段指定值。", ""); } var i=0; select_m.each(function(){ if(i%2==0) { var value_o = $(this).children("option:selected").length; if(value_o==1) { var parent_text = $(this).parent().text(); if(parent_text.indexOf('必须')<0) $(this).parent().append("<span style=\"color:red;\">必须为此必填字段指定值。</span><br/>"); } else { $(this).parent().text().replace("<span style=\"color:red;\">必须为此必填字段指定值。</span><br/>", ""); } } i++; }); return false; } else { return true; } }
} </script>
bug:再次填写后无法去掉“必须为此必填字段指定值。”语句,即“$(this).parent().text().replace("<span style=\"color:red;\">必须为此必填字段指定值。</span><br/>", ""); ”无法实现,再待研究
bug解决:
$("input[title='名称']").parent().children("span").last().remove();
$("input[title='名称']").parent().children("br").last().remove();
3、 查阅项在管理页面会有链接与长度的解决js
var self = $('.ms-vb2');
self.each(function(){
var self_a = $(this).children("a");
var objString="";
if(self_a.length>0)
{
self_a.each(function(){
objString += $(this).text()+";";
});
}else
{
objString = $(this).text();
}
var objLength = objString.length;
var count=10;
var flag = 0;
reg=/^[\x00-\xff]+$/;
for(var i=0; i<objLength; i++)
{
if(flag>count)
{
flag = i-1;break;
}
else
{
//alert(reg.test(objString[i]));
if (reg.test(objString[i]))
flag +=2;
else
flag +=1;
}
}
if(flag < objLength){
$(this).attr("title",objString);
objString = $(this).text(objString.substr(0,flag) + "…");
}
else
{
$(this).attr("title",objString);
objString = $(this).text(objString);
}
});
遗留问题:中英文的字符区分,再待研究