一般动作
如下面直接给表单字段赋值的示例(或者是通过 js 代码直接修改 foobar 的值):
此时,如果表单加载完后,用户不再手动修改其他表单字段,直接点击流程提交按钮,则流程提交出去后发现 foobar 的值还是空,而不是表单上初始化并显示的123。
原因是流程表单提交的时候,会检查表单是否有变化,如果没有变化则直接提交流程,否则先执行保存操作。而判断表单是否变化,是通过用户操作表单字段后、自动给对应的HTML元素设置一个 changed 的 css 类来实现的。
而上面的例子中,虽然修改了表单字段的值,但是没有触发HTML元素的 onchange 事件、没有设置 changed 的 css 类,因而流程提交时也就认为表单没有变化,从而不会执行保存操作、数据库中 foobar 属性的值也就始终为空了。
因此,解决方案就是给这个字段加一个 css 类,如:
但是,加上 changed 类后,流程保存、提交的时候,浏览器会提示“是否离开该页面...”云云。因此正确的代码应该是:
即值改变了的时候才设置 changed 类。