你可以自定义你的网页表单,让它更独特,并启用满足你使用场景的功能。
字段布局
你可以在网页表单字段表格中添加 Column Breaks 和 Section Breaks 来更改表单字段的布局。
多步骤网页表单
更新布局能让网页表单看起来更好,但如果网页表单有很多字段,它仍然会变得很长。
我们可以添加 Page Breaks 来将各个部分分隔到不同页面(称为多步骤网页表单)。
你最多可以添加 9 个分页符,这最多只允许 10 个页面。
下面提到的所有自定义选项都可以在网页表单文档的“自定义”选项卡中完成。
提交按钮标签
你可以更改网页表单上提交按钮的标签。
横幅图片
你现在可以在网页表单上添加横幅图片。
面包屑导航
你可以通过添加 JSON 对象来自定义网页表单中的面包屑导航。
只有在网页表单启用了
[list view](/framework/v14/user/en/web-form/settings#list-settings)时,面包屑导航才会显示。
示例:
提交后页面
你可以设置自定义的成功标题和消息,它们会在用户提交网页表单后显示。
根据访问权限,提交页面上会显示额外的按钮,例如
查看之前的回复
编辑你的回复
查看你的回复
和
提交另一条回复
如果网页表单是通过网页表单请求打开的,这些操作链接会在需要时保留请求密钥。
通过设置 success_url 字段,将你的网页表单配置为在提交后 5 秒重定向到特定 URL。
自定义 CSS
你可以添加自定义 CSS 来更改网页表单的外观
示例:
.web-form-header {
margin-bottom: 2rem;
border: 1px solid var(--blue-200) !important;
border-radius: var(--border-radius);
background-color: var(--blue-50) !important;
}
.web-form-head {
border: none !important;
padding-bottom: 2rem !important;
}
.web-form {
border: 1px solid var(--dark-border-color) !important;
border-radius: var(--border-radius);
padding-top: 2rem !important;
}
客户端脚本
你也可以向网页表单添加自定义客户端脚本
事件处理器
编写一个事件处理器,在字段发生变化时执行操作。
frappe.web_form.on([fieldname], [handler]);
获取值
获取特定字段的值
value = frappe.web_form.get_value([fieldname]);
设置值
设置特定字段的值
frappe.web_form.set_value([fieldname], [value])
验证
frappe.web_form.validate 会在 web_form 保存之前被调用。通过重写 validate 方法来添加自定义
验证。要阻止用户保存,
请返回 false;
frappe.web_form.validate = () => {
// return false if not valid
}
设置字段属性
frappe.web_form.set_df_property([fieldname], [property], [value]);
表单加载时触发脚本
在表单加载后使用自定义设置初始化表单
frappe.web_form.after_load = () => {
// init script here
}
示例
如果无效则重置值
frappe.web_form.on('amount', (field, value) => {
if (value < 1000) {
frappe.msgprint('Value must be more than 1000');
field.set_value(0);
}
});
自定义验证
frappe.web_form.validate = () => {
let data = frappe.web_form.get_values();
if (data.amount < 1000) {
frappe.msgprint('Value must be more than 1000');
return false;
}
});
根据值隐藏字段
frappe.web_form.on('amount', (field, value) => {
if (value < 1000) {
frappe.web_form.set_df_property('rate', 'hidden', 1);
}
});
启动时显示消息
frappe.web_form.after_load = () => {
frappe.msgprint('Please fill all values carefully');
}