前提として「プロジェクト」という名称の拡張シートに「プロジェクト規模」という名称のセレクト型項目と
「プロジェクト人員」という名称の数値型項目を配置しています。

セレクト型項目の「プロジェクト規模」は、「A」「B」「C」3つの選択肢を用意しています。

入力チェックのJavaScriptの実装にあたり、ブラウザの開発者ツール等を用いて事前に以下の情報を調査する必要があります。
- 拡張シートの登録画面での登録ボタン押下時に実行されるJavaScriptの関数
- 「プロジェクト規模」セレクト型項目の要素の「data-col-name」属性の値
- 「プロジェクト規模」セレクト型項目の選択肢の「data-code」属性の値
- 「プロジェクト人員」数値型項目の要素の「data-col-name」属性の値
開発者ツールで確認した結果、「プロジェクト規模」セレクト型項目のname属性は"customize_sheet_select_1"
「プロジェクト人員」数値型項目のname属性は"customize_sheet_integer_1"であるとします。
また拡張シート「プロジェクト」の登録ボタン押下時には"checkInputNumberValue();"および"customizeSheetFunc.insert();"というJavaScript関数が呼ばれます。
まず独自のチェックを行うための関数customCheck()を実装します。
拡張シート「プロジェクト」登録画面のdivタグのname属性の値は"customize_sheet_regist_page"です。
この画面要素から、「プロジェクト規模」セレクト型項目の選択値と「プロジェクト人員」数値型項目の入力値を取得します。
例として、100名以上の人員の場合に「プロジェクト規模」を"A"とする運用とします。
取得した「プロジェクト規模」と「プロジェクト人員」の値を使用して、「プロジェクト規模」が"A"の場合(ここでは選択肢"A"の「data-code」属性の値が"1"とします)
「プロジェクト人員」が100未満であれば画面上にメッセージを出力し登録処理を中断する実装をします。
メッセージの追加についてですが、eセールスマネージャーSP版では、class属性に"alert"を付与することで
メッセージの先頭にエラーアイコンを表示、メッセージ本文を赤字で表示することができます。
独自チェックの結果が問題なければ、登録ボタン押下時に実行される本来のJavaScript関数を呼び出します。
※eセールスマネージャーの本来のJavaScript関数を呼び出さない場合、データ登録ができない可能性があります。
次に、拡張シート「プロジェクト」の登録ボタン押下時に上記で作成した独自関数を呼び出すために、
登録ボタンの要素のonclick属性値を書き換える処理を$(window).on("esmsp.customize_20002.regist.load", function(event, param){ {}の内部に実装します。
以上を踏まえたうえで、実装例を以下に示します。
sample.js
$(window).on("esmsp.customize_20002.regist.load", function(event, param){
// 拡張シート「プロジェクト」の登録ボタンのonclick属性値を書き換える
$registButton = $("div[name='customize_sheet_regist_page']:visible a[title='regist']")
$registButton.attr('onclick', 'customCheck();');
});
function customCheck(){
$page = $("div[name='customize_sheet_regist_page']:visible");
// 「プロジェクト規模」セレクト型項目の選択値を取得
selectVal = $page.find("table[data-col-name='customize_sheet_select_1'] span[data-name='select_text']").attr('data-code');
// 「プロジェクト人員」数値型項目の入力値を取得
numberVal = $page.find("table[data-col-name='customize_sheet_integer_1'] a.input_text").text();
if(selectVal == 1 && numberVal < 100){
let message =
`<tr class='alert validate'>
<td colspan='3'>
<div class='alert validate'>プロジェクト規模が'A'の場合は、プロジェクト人員を100以上にしてください。</div>
</td>
</tr>`
// エラーメッセージを「プロジェクト人員」項目の上部に追加
$page.find("table[data-col-name='customize_sheet_integer_1'] tbody").prepend(message);
return false;
}
// 独自チェック通過後に、本来のJavaScript関数を呼び出す
checkInputNumberValue();
customizeSheetFunc.insert();
}
実装例では「プロジェクト規模」が"A"の場合のみの処理を実装していますが、"B"や"C"のケースでチェックの範囲を変えたい場合は処理を追加してください。
当該プラグインをzipファイルにパッケージングし、eセールスマネージャーRemixに登録します。
SP版にログインし、拡張シート「プロジェクト」の登録画面にて、
「プロジェクト規模」セレクト型項目に"A"を選択した状態で、「プロジェクト人員」数値型項目に100以下の値を入力し登録ボタンを押下すると、
独自の入力チェックが実行され、以下のようにエラーメッセージが出力されます。