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);
        }
    });

遗留问题:中英文的字符区分,再待研究

posted @ 2012-12-11 16:34  wuli8129  阅读(352)  评论(0编辑  收藏  举报