開発者向け機能:スクリプト:$p.on
## 概要
監視項目がイベント発火した時に、記述した任意処理を実行する機能になります。
## 構文
##### JavaScript
```
$p.on(<イベント名>, <監視項目>, <任意の処理>)
```
## 各パラメータの説明
|パラメータ名|説明|
|:--|:--|
|イベント名|Ajaxのイベント名|
|監視項目|対象となる項目の[データベース上のカラム名](dev-column-name)|
|任意処理|イベント発火時の処理|
## 記述例
##### JavaScript
```
$p.on('change', 'ClassA', function () {
console.log('分類Aの値が変更されました。')
})
```
## サンプルコード
<details>
<summary>1.複数項目の組み合わせで重複チェックする</summary>
新規作成・編集画面で、タイトル・対象日・作成者(分類A・分類B・分類C)のいずれかの値が変更されるたびに、3項目の値を結合したキーを分類Gに自動的に設定します。
分類Gに[重複禁止](/ja/manual/table-management-no-duplication)を設定しておくことで、3項目の組み合わせによる重複を検知できます。
#### 実務での使いどころ
Pleasanterの項目設定にある[重複禁止](/ja/manual/table-management-no-duplication)は、単一の項目にしか設定できません。
タイトル・対象日・作成者のように、複数項目の組み合わせで重複を防ぎたい場合は、対象項目の値を結合した値を格納する項目を別途用意し、その項目に重複禁止を設定する必要があります。
本サンプルは、その結合キーを自動生成する部分を担います。
#### 事前準備
1:重複チェックの対象にしたい3項目を用意します(例:分類A=タイトル、分類B=対象日、分類C=作成者)。
2:結合キーを格納する分類項目を1つ用意します(例:分類G)。
2-1:「テーブルの管理 > 項目」タブで分類Gを選択します。
2-2:[重複禁止](/ja/manual/table-management-no-duplication)にチェックを入れます。
2-3:分類Gは通常の項目として画面に表示したままでも動作します。ユーザーの目に触れさせたくない場合は、非表示にする方法を別途検討してください(本サンプルでは非表示化は扱いません)。
3:スクリプトを登録します。
3-1:「テーブルの管理 > スクリプト」タブで「新規作成」を選択します。
| 設定項目 | 設定値 |
|:--|:--|
| タイトル | 任意の名前(例:3項目の重複チェック用キー生成) |
| スクリプト | 下記サンプルコードを貼り付け |
| 出力先 | 「全て」のチェックを外し、「新規作成」「編集」にチェック |
##### JavaScript
```
// 分類A・分類B・分類Cの値を結合し、重複チェック用の分類Gに設定する
function setDuplicateKey() {
$p.set(
$p.getControl('ClassG'),
`${$p.getValue('ClassA')}${$p.getValue('ClassB')}${$p.getValue('ClassC')}`,
);
}
// 分類A・分類B・分類Cのいずれかが変更されたら、結合キーを再生成する
$p.on('change', 'ClassA', function () {
setDuplicateKey();
});
$p.on('change', 'ClassB', function () {
setDuplicateKey();
});
$p.on('change', 'ClassC', function () {
setDuplicateKey();
});
```
</details>



