我有一个标签,其中包含大量(20+)字段占用的部分。它们都是复选框,其中一个是“N / A”选项。任何人都可以建议一种简单的方法来编写javascript,确保至少做出一个选择,如果没有,只有当用户勾选N / A时,才让用户继续通过这一部分。我试图避免检查每个复选框中的值。有什么建议吗?
由于
答案 0 :(得分:1)
从用户界面的角度来看,您可以将该部分拆分为两个部分(没有标题标签,因此它看起来像一个部分)。第一个将具有N / A复选框,如果选中,则Javascript将仅隐藏包含所有其他复选框的部分。
如果您确实想要检查值,您仍然可以使用相同的概念,但使用jQuery查找该部分中的所有复选框以及所有常规复选框。如果未选中任何一个,如果还未选中N / A,则可以停止保存并显示错误消息。
答案 1 :(得分:1)
我认为这只是使用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");
}
});
未经测试的代码,但希望能让您对如何进展有所了解。