多数 (20 以上) のフィールドが占めるセクションを含むタブがあります。それらはすべてチェックボックスであり、そのうちの 1 つは「N/A」の選択肢です。少なくとも 1 つの選択が確実に行われるようにする JavaScript の簡単な書き方を誰でも提案できますか、そうでない場合は、N/A がチェックされている場合にのみ、ユーザーがこのセクションを通過できるようにします。すべてのチェックボックスの値をチェックしないようにしています。助言がありますか?
ありがとう
多数 (20 以上) のフィールドが占めるセクションを含むタブがあります。それらはすべてチェックボックスであり、そのうちの 1 つは「N/A」の選択肢です。少なくとも 1 つの選択が確実に行われるようにする JavaScript の簡単な書き方を誰でも提案できますか、そうでない場合は、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");
}
});
テストされていないコードですが、うまくいけば、進行方法についての良いアイデアが得られるはずです。