控制表单内容字段必填项的一种设计思路

业务场景:近日在实施一项目
1、差旅费用报销允许代报,就需要 表单上的报销人可以选择,申请人固定
2、关键业务人员提出 差旅费用报销必须关联 对应差旅申请流程
3、总经理秘书提出 当 报销人为 总经理时,不需要对应差旅申请流程,因为总经理本人不会发起差旅申请
本业务场景的实现是在目前所在OA厂商的ecology平台中实现
JS代码如下

//对应字段ID复制
var field_a = "field6030";
var field_b = "field6078";
var btzd = "";
//必填时的图标
var textValue = "<img align='absmiddle' src='/images/BacoError_wev8.gif'>" ;
//设置定时器1.8S执行一次
var id=window.setInterval("linkageMust()",1800);
//具体执行的函数
function linkageMust(){
      var bdzdbt="";
      //获取表单中某一隐藏字段的值,此字段用来存放总经理的ID
      var ceoid=jQuery("#field6305").val();
      //获取目前表单中提交时会检查必填的字段字符串
      btzd = jQuery("input[name='needcheck']").val();
      //判断 需要设置必填或者不必填的字段 是否在 必填字符串中
      var tag=btzd.indexOf(field_b);
      //获取 报销人的ID
      var a_v = jQuery("#"+field_a).val();
      var fieldIds = "" ;
      //当报销人的ID等于CEO的ID,同时对应差旅关联流程字段是必填字段,则调整为非必填
       if(a_v == ceoid&&tag!=-1){
             //将对应出差流程相关字段中的内容清空即必填提示图片清空       
             jQuery("#"+field_b+ "span").html('');
             jQuery("#"+field_b+ "spanimg").html('');
             //设置字段目前的属性为非必填
             jQuery("#"+field_b).attr('viewtype','0');
             //将目前表单中的必填字符串分割成为数组
             var array=btzd.split(",");
             var length=array.length;
             for(var i=0;i<length;i++)
                         {
                         //剔除数组中对应 差旅流程字段的元素,重组必填字段字符串
                         if(array[i]!=field_b&&array[i]!=''){
                                 bdzdbt=bdzdbt+","+array[i];
                                 }
                                 }
            //将重组的不包含  关联差旅流程字段 的 必填字段字符串赋值给 平台表单中的必填字符串                     
            jQuery("input[name='needcheck']").val(bdzdbt);
            //最终达到了从去除必填样式 到  去除 必填校验的效果
       }
       //当报销人的ID不等于CEO的ID,同时对应差旅关联流程字段目前不是必填,则调整为必填
           else if(a_v != ceoid&&tag==-1){
            //加必填样式效果
             jQuery("#"+field_b+ "spanimg").html(textValue);
             jQuery("#"+field_b).attr('viewtype','1');
            //将 差旅字段 添加到  平台表单内中的必填字符串
             fieldIds = btzd + "," + field_b ;
             jQuery( "input[name='needcheck']").val(fieldIds);
            //最终达到了 添加必填样式  添加必填项检验的效果
            } 
}

//本段脚本可以让申请人来回选择报销人员,系统会根据报销人实时判断需要是否必填并做出响应;同时优化了代码结构,避免了不必要的变量存储和系统运算

上述代码另存为 Travel_input.js文件,在表单中引入

<!-- script代码,如果需要引用js文件,请使用与HTML中相同的方式。 -->
<script language="javascript" type="text/javascript" src="/js/Travel_input.js"></script>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值