E8-怎么监听表单里的日期控件被修改过

news/2024/7/11 1:15:26 标签: javascript, 开发语言, 前端, jquery

起因

业务部门每周六例会,业务部门请假的,如果包含星期六,需要老板审批。

我思路是当开始日期或结束日期被修改时,判断请假日期中是否包括周六,根据是束包含周六,去设置某个控件的值,后续步骤根据这个控件的值去确定流程的走向。

这篇文章记录这个需求中,我解决的第一个问题的过程,怎么知道表单里的时间控件被修改过。

经过

起初,认为这个问题很简单。写个JQUERY不就好了嘛,就像下面这么写。

// 日期控件的修改事件
    $("#field9442").change(function(){
        alert("开始日期修改事件");
    });

 发起流程,填写表单,修改日期时并不弹这个提示框,说明change事件并没有触发。在网上逛了一圈,按网上的说法,又做了一下测试,接下来按我的理解来说一下为什么change事件没有被触发。

change事件会在<input type="text">的控件失去焦点时value的值和获得焦点时value的值相比,如果发生变化了,会触发change事件。

说白了,触发change方法是在失去焦点时触发,并且要满足两个先决条件,一个获得焦点,一个是值发生改变。这就不难理解了,由于E8中用到的日期控件,展示给用户看的是个<span>标签,实际存值的<input>标签是隐藏的,虽然其值发生了变化,但并没有获得焦点和失去焦点的过程,所以并不会触发change事件。

还有小伙伴说,泛微有自己的API,可以按以下的方法写。

WfForm.bindFieldChangeEvent("#field9442", function () {
alert("开始日期修改事件2");
})

 有同样想法的小伙伴们请注意,这个方法只适用于E9,至于适不适用E9以上的版本,不确定。但它真的不适用E8,提示"WfForm is not defined"。

最后,我的解决方法是从对应的<span>上想办法。日期控件的DOM结构是这样式儿的。每个控件的组成,有一个<button>按钮,点击之后弹出日期选择框;有一个<span>标签,负责展示信息给用户看;有一个<input>标签,不可见,负责储存、提交数据用。

可以看出来,与控件对应的<span>标签的ID的命名规则是控件名加“span”。

网上找到了这么段代码,给<span>标签的DOMNodeInserted事件绑定方法。

    $("#field9442span").bind('DOMNodeInserted',function(e){
        alert("444");
    });

结果

以上方法能够实现了临听E8工作流的日期控件的方法了,继续去实现后续的功能了。

儿童快乐!


http://www.niftyadmin.cn/n/384033.html

相关文章

Java开发手册中为什么禁止使用BigDecimal的equals方法做等值比较已经为什么禁止使用double直接构造BigDecimal

场景 阿里Java开发手册嵩山版中明确指出&#xff1a; 1、BigDecimal的等值比较应使用compareTo()方法&#xff0c;而不是equals()方法 equals()方法会比较值和精度&#xff08;1.0与1.00返回结果为false&#xff09;,而compareTo()则会忽略精度 2、禁止使用构造方法BigDeci…

计算机网络第二章——物理层(上)

提示&#xff1a;男儿何不带吴钩&#xff0c;收取关山五十州 文章目录 2.1.1 物理层基本概念知识引导物理层接口特征 2.1.2 数据通信基础知识数据通信相关术语数据通信系统要考虑的问题三种通信方式串行传输&并行传输同步传输&异步传输 脑图时刻 2.1.3 数据通信基础知识…

数据在内存中存储的真相来了!!!

&#x1f929;本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 &#x1f970;内容专栏&#xff1a;这里是《C知识系统分享》专栏&#xff0c;笔者用重金(时间和精力)打造&#xff0c;基础知识一网打尽&#xff0c…

Express框架从入门到如土

目录 前言一&#xff0c;初体验二&#xff0c;路由2.1 什么是路由2.2. 路由的使用2.3 获取请求报文参数2.4 id的通配2.5 响应的设置 三&#xff0c;中间件3.1 中间件概述3.2 全局中间件与路由中间件的比对3.3 全局中间件的使用3.4 局部中间件的使用3.5 静态资源中间件&#xff…

深拷贝浅拷贝的区别

什么是深拷贝、浅拷贝 深拷贝 深拷贝是将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象,且修改新对象不会影响原对象 浅拷贝 浅拷贝是创建一个新对象&#xff0c;这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型&#xff0c;拷…

uniapp sqlite数据库封装设计总结(完结篇)

文章目录 往期回顾最新封装代码数据库js封装示例如何使用前期准备 数据库操作再封装封装代码测试结果 总结&#xff1a;多次封装的有点 往期回顾 uniapp sqlite 数据库操作封装 uniapp sqlLite 数据库操作封装 2&#xff1a;如何面向对象操作数据库 uniapp sqlite3 时间查询 …

我的浙大MEM提前批面试全流程重点信息梳理

浙江大学MEM已上岸&#xff0c;目前在读&#xff0c;给大家分享下我的备考经验&#xff0c;希望可以帮助到大家。 在确定自己的目标院校后收集相关信息是非常重要的&#xff0c;比如今年计划招多少学生&#xff0c;往年上岸都需要多少分&#xff0c;学费等情况&#xff0c;招考…

Ubantu 22.4 环境准备

Ubantu 22.4 环境准备 一.安装Ubantu22.4操作系统 具体步骤省略&#xff0c;简单易操作二.修改root密码 sudo passwd root三.配置网络 图形化界面&#xff0c;同windows四. 安装SSH 1.更新系统全局依赖 sudo apt update && sudo apt upgrade -y2.安装SSH(OpenSSH…