新規投稿
フォローする

保存時、数値チェックした後に条件分岐


いつもお世話になっております。

数値Aの値と数値Bの値を計算フィールドCへ差異として出しています。

保存時に差異が0の場合はそのまま保存させ

差異が0以外の場合は、window.confirmを使用しダイアログを表示させOKの場合はそのまま保存

キャンセルの場合は、event.errorを使用し保存させない。

という動きを実装したいのですが、差異が0の時もダイアログが出てきてしまいます。

0をダブルクォーテーションで囲っているのが原因かと思い外してみましたが解消されませんでした。
原因についてご教示頂けますでしょうか。

以下、コードです。よろしくお願い致します。



//差異の値が0以外の時、ダイアログを出し
//OKの場合そのまま保存,キャンセルの場合は保存させない

(function() {
"use strict";
var check = ['app.record.create.submit','app.record.edit.submit'];
kintone.events.on(check, function(event) {

var record = event.record;
var res = window.confirm("数値Aと数値Bの値が一致していません。\nこのまま保存しますか?");

 

if ( record.計算C.value !== "0" ){

 if( res === true ){

 //OKが押されたらそのまま保存させるので何もしない

 } else {

 //キャンセルが押されたら、保存させない
 event.error = "キャンセルしました。";

 }


} else {

//計算Cの値が0の時は、何もしない

}

return event;

});
})();

0

4件のコメント

Avatar
文系男

kusanagi さん

こんにちは!

 

簡単にですが、処理を書き換えてみました!

以下のような処理でご希望の動作は可能でしょうか?

参考になれば幸いです。

 

(function() {
       
    "use strict";
       
    var check = ['app.record.create.submit','app.record.edit.submit'];
       
    kintone.events.on(check, function(event) {
       
        var record = event.record;
       
        if ( record.計算C.value !== "0" ){
            if( !(window.confirm("数値Aと数値Bの値が一致していません。\nこのまま保存しますか?") ) ){
                event.error = "キャンセルしました。";
            }
        }

        return event;

    });
})();

 

文系男により編集されました
0
Avatar
文系男

kusanagi さん

条件に関係なくダイアログが出てしまうのは、条件判定の前に

変数に入れる値をダイアログから入力する処理が記述されているためです。

 

var res = window.confirm("数値Aと数値Bの値が一致していません。\nこのまま保存しますか?");

上記記述を以下の判定後に行えば、問題はないかと思います。

if ( record.計算C.value !== "0" )
0
Avatar
kusanagi

 

文系男さま

ご教示頂きありがとうございます!
window.confirmは変数に格納しても処理がはしってしまうのですね。
勉強になりました。

提供して頂いたコードで希望の動作確認できました。
とても助かりました!ありがとうございました。

 

kusanagiにより編集されました
0
Avatar
文系男

kusanagi さん

 

お役に立てたようで良かったです!^^

0
ログインしてコメントを残してください。