0

我有一个选项卡,其中包含大量(20 多个)字段占用的部分。它们都是复选框,其中一个是“N/A”选项。任何人都可以建议一种编写 javascript 的简单方法,以确保至少做出一个选择,或者如果没有,只有在 N/A 被勾选时才让用户继续通过此部分。我试图避免检查每个复选框中的值。有什么建议么?

谢谢

4

2 回答 2

1

从用户界面的角度来看,您可以将该部分分成两个部分(没有标题标签,因此看起来像一个部分)。第一个将有 N/A 复选框,如果选中,Javascript 将简单地隐藏带有所有其他复选框的部分。

如果你真的想检查值,你应该仍然可以使用相同的概念,但是使用 jQuery 来查找该部分中的所有复选框以及所有普通复选框。如果它们都没有被选中,如果 N/A 也没有被选中,您可以停止保存并显示错误消息。

于 2013-06-05T21:00:38.647 回答
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");
    }
});

未经测试的代码,但希望能给你一个关于如何进步的好主意。

于 2013-06-06T07:52:27.430 回答