D365电话号码字段如何移除内置电话图标
移除Dynamics 365/Dataverse表单电话字段旁内置电话图标的方法
图标效果参考:
这个拨号图标是系统为「电话」数据类型字段自动渲染的原生交互控件,没有开放在formContext.getControl()返回的控件配置项里,排查控件属性找不到配置入口是正常情况。
方案1:无代码方案(稳定性最高,优先选)
- 自定义电话字段直接把字段数据类型从「电话」改成「单行文本」,需要做格式校验的话单独给字段加正则校验规则即可,普通单行文本字段不会自动渲染这个拨号图标。
- 如果是系统自带的不可修改数据类型的电话字段(比如联系人、用户表的默认业务电话字段),在表单上移除原电话字段,新增一个自定义单行文本字段存储电话号码,配置字段同步规则让自定义字段和原系统电话字段值双向同步,表单上仅放置自定义单行文本字段就不会出现该图标。
方案2:前端注入样式隐藏(适合无法调整字段配置的场景)
图标是表单前端渲染的固定类名按钮元素,可以在表单加载时注入CSS直接隐藏,不需要依赖控件API:
- 给表单OnLoad事件绑定JS函数,勾选「将执行上下文作为第一个参数传递」
- 函数代码如下:
function hideFormPhoneIcon(executionContext) { const formContext = executionContext.getFormContext(); const targetPhoneControl = formContext.getControl("myprefix_businessphone"); if (!targetPhoneControl) return; const controlWrap = targetPhoneControl.getContainer(); // 避免重复注入样式 if (controlWrap.querySelector("style[data-hide-tel='true']")) return; const hideStyle = document.createElement("style"); hideStyle.setAttribute("data-hide-tel", "true"); // 匹配字段容器内的电话拨号按钮 hideStyle.textContent = ` button[aria-label^="拨打"], [data-icon-name="Phone"] { display: none !important; } `; controlWrap.appendChild(hideStyle); }
注意:该方案依赖微软当前版本表单的前端元素选择器,如果后续产品更新调整了前端DOM结构、类名或ARIA标签,需要同步调整选择器规则,存在一定维护成本。
内容的提问来源于stack exchange,提问作者axbeit
相关产品推荐
相关产品推荐

