【发布时间】:2014-06-25 20:22:22
【问题描述】:
我想在所需表格上创建一个“部分”。基本上这些部分都有复选框。用户应该至少检查一个。如何做到这一点?
【问题讨论】:
-
您不能在所需表格上创建“部分”。如果您想在
Section中检查至少一个Checkbox。您必须在其中进行一些分组
标签: javascript dynamics-crm-2011 customization
我想在所需表格上创建一个“部分”。基本上这些部分都有复选框。用户应该至少检查一个。如何做到这一点?
【问题讨论】:
Section 中检查至少一个Checkbox。您必须在其中进行一些分组
标签: javascript dynamics-crm-2011 customization
在您的OnSave 事件中,您需要检查是否至少选中了一个复选框,如果未选中所有复选框,您可以停止保存事件。
要停止保存事件,您需要将上下文传递给 onsave 事件:
函数如下所示:
function onSave(executionObj)
{
// stop the save event
executionObj.getEventArgs().preventDefault();
}
检查值有几种方法,最简单的一种是保留它们的数组:
function onSave(executionObj)
{
var canSave = false;
var fields = ["new_checkbox1", "new_checkbox2", "new_checkbox3"];
for (index = 0; index < fields.length; index++)
{
var checkboxValue = Xrm.Page.getAttribute(fields[index]).getValue();
if (checkboxValue == true)
{
canSave = true;
break;
}
}
if (canSave == false)
{
alert("At least one checkbox must be selected!");
executionObj.getEventArgs().preventDefault();
}
}
【讨论】:
Guido 的回答完全正确,但我想提供一个不同的解决方案。除了在 onSave 事件期间执行验证,您可以为您的复选框连接 OnChangeEvents,它们执行与 Guido 相同的基本逻辑,除了将它们标记为不需要或需要:
Xrm.Page.getAttribute(controlName).setRequiredLevel("required");
Xrm.Page.getAttribute(controlName).setRequiredLevel("none");
例如,假设您有复选框 1、2 和 3,并且默认情况下,它们被标记为必需。
当用户选中一个复选框时,将其标记为必填,并将未选中的其他复选框标记为不需要。如果用户全部取消选中,则将它们全部标记为必填。
在代码中这样做比较困难,但可以提供更好的用户体验,因为他们可以在更新表单之前看到需要什么,而且您不必担心更改 OnSave 默认行为。
【讨论】: