在点击OK按钮之前立即关闭甜蜜警报,或者在出现甜蜜警报时点击输入

时间:2017-05-22 17:19:22

标签: javascript jquery sweetalert

im new using sweet alert,首先我将展示代码:

    $('#byr').keydown(function (e){
      var bayar = Number($('#byr').val());
      var total = Number($('.rp-harga').text());
      var kmb = $('.rp-kmb').text();

      if(e.keyCode == 13)
      {
        if(bayar<total)
        {
          alert("Uang Anda Kurang");
        }
        else {
          swal("Transaksi Berhasil", "Kembalian : Rp " + (bayar-total).toString(), "success");
        }
      }
    });

问题是当我用输入文字填充输入后用其他条件时,它会显示甜蜜警报,但是在我点击确定按钮或在出现甜蜜警报时点击输入时,甜蜜警报会立即关闭

我尝试添加e.preventDevaults(),并解决了这些问题:

  1. 如果我在swal代码之前添加它,则警告不能出现在其他contidion
  2. 如果我在swal代码后添加它,同样的问题就会发生(swal在点击OK / hit enter之前立即关闭)。
  3. Here是一个有问题的JSFiddle。

1 个答案:

答案 0 :(得分:3)

我假设你正在使用sweetalert2。这个插件有一个配置选项:

  

allowEnterKey :如果设置为false,则用户无法通过按Enter键或空格键来确认模态,除非他们手动对焦确认按钮。

因此你可以:

  • 禁用此功能设置allowEnterKey为false
  • 在10毫秒后调用 swal 以克服第一个keydown的以下src代码:

    window.onkeydown = handleKeyDown;

&#13;
&#13;
$('#byr').keydown(function (e) {
    var bayar = Number($('#byr').val());
    var total = 0;

    if (e.keyCode == 13) {
        if (bayar < total) {
            alert("Uang Anda Kurang");
        }
        else {
            setTimeout(function() {
                swal({
                    title: "Transaksi Berhasil",
                    text: "Kembalian : Rp " + (bayar - total).toString(),
                    type: "success",
                    allowEnterKey: true // default value
                });
            }, 10)
        }
    }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/sweetalert2/6.6.2/sweetalert2.min.css">
<script src="https://cdn.jsdelivr.net/sweetalert2/6.6.2/sweetalert2.min.js"></script>

<input type="text" id="byr">
&#13;
&#13;
&#13;