我有一个选项卡,其中包含大量(20 多个)字段占用的部分。它们都是复选框,其中一个是“N/A”选项。任何人都可以建议一种编写 javascript 的简单方法,以确保至少做出一个选择,或者如果没有,只有在 N/A 被勾选时才让用户继续通过此部分。我试图避免检查每个复选框中的值。有什么建议么?
谢谢
我有一个选项卡,其中包含大量(20 多个)字段占用的部分。它们都是复选框,其中一个是“N/A”选项。任何人都可以建议一种编写 javascript 的简单方法,以确保至少做出一个选择,或者如果没有,只有在 N/A 被勾选时才让用户继续通过此部分。我试图避免检查每个复选框中的值。有什么建议么?
谢谢
从用户界面的角度来看,您可以将该部分分成两个部分(没有标题标签,因此看起来像一个部分)。第一个将有 N/A 复选框,如果选中,Javascript 将简单地隐藏带有所有其他复选框的部分。
如果你真的想检查值,你应该仍然可以使用相同的概念,但是使用 jQuery 来查找该部分中的所有复选框以及所有普通复选框。如果它们都没有被选中,如果 N/A 也没有被选中,您可以停止保存并显示错误消息。
我认为这只是在 Xrm.Page 对象中使用一些现有函数的一个例子,有几个可以同时处理许多属性。不管你怎么做,你都必须检查每个字段,但你可以用相当简洁的方式来做。
我建议添加一个 OnSave 事件,代码如下:
//we want to make sure that at least one of these is populated
//new_na is the na field
//the others are the possible choices
var requiredFields = ["new_na", "new_field1", "new_field2", "new_field3"];
//this loops through every attribute on the page
Xrm.Page.data.entity.attributes.forEach(function (attribute, index) {
//this will track if at least one field was set
bool atLeastOneSet = false;
//see if the requiredFields array contains this field
if (requiredFields.indexOf(attribute.getName()) != -1) {
//if it is required, check the value
if(attribute.getValue()) {
//if it set update the bool flag
atLeastOneSet = true;
}
}
//finished processing all fields, if atLeastOneSet is false no field has been set
if(!atLeastOneSet) {
//If this code is used in an on save event this will prevent the save
Xrm.Page.context.getEventArgs().preventDefault();
//Give the user some message
alert("At least one field must be populated");
}
});
未经测试的代码,但希望能给你一个关于如何进步的好主意。