67568


jquery.confirmと言うライブラリーを利用して、confirm画面を作るところまでは良いのですが、クリックした段階でダイアログが出る前に画面遷移してしまいます。

非同期処理で値を返すタイミングをダイアログのボタンを押した後にしたいのですが、どうすればよいかご教示頂けると、幸いです。

[code]

    <script type="text/javascript" src="../js/promise-7.0.4.min.js"></script>
    <script type="text/javascript" src="../js/jquery.confirm/jquery.confirm.js"></script>
    <link href="../js/jquery.confirm/jquery.confirm.css" rel="stylesheet">
    <button type="submit" class="btn btn-danger" id="delet" formaction="userDelete" value="削除" onclick="return chkdelete()">削除</button><br/>
    
[/code]

[code]

    function chkdelete() {
      var testV = test().then(function (result) {
        console.log(result);
        return result;
      });
      console.log(testV.value);
      return (testV.value = test().then(function (result) {
        console.log(result);
        return result;
      }));
    }
    
    function test() {
      return Confirmation("test").then(function (result) {
        console.log(result);
        return result;
      });
    }
    
    function Confirmation(messege) {
      var promise = new Promise(function (resolve, reject) {
        console.log("1");
        resolve(false);
      });
      return new Promise(function (resolve, reject) {
        $.confirm({
          title: "エラーメッセージ",
          message: messege,
          buttons: {
            承認: {
              action: function () {
                resolve(true);
                return false;
              },
            },
            キャンセル: {
              action: function () {
                resolve(false);
                /* キャンセルボタンの処理を記述 */
                // ダイアログを閉じる
                return false;
              },
            },
          },
        });
      });
    }
    
[/code]


CC BY-SA 4.0
2020-06-12T04:02:00.090
67567
2020-06-12T05:00:54.980
2020-06-12T05:00:54.980
7997
40261
question
javascript jquery promise
自作のconfirm画面を作り、promiseを利用して、戻り値を変えたいです。


一つの案ですが、submitをボタンによる処理にするのではなく、input
type="button"としてonclickイベント内でsubmitしてあげれば良いのではないでしょうか？


CC BY-SA 4.0
2020-06-12T04:09:03.950
67568
2020-06-12T04:09:03.950
19048
67567
answer