2017-09-15 110 views
1

我有CRUD并希望添加Sweet Alert的确认框。但我只是将它添加到创建窗体。显然,简单的,我就是这样想:表单提交不等待甜蜜警报确认

  • 输入数据
  • 点击提交按钮
  • 甜警报确认出现
  • 点击“是”
  • 数据存储到数据库
  • 返回阅读表

这是我的代码:

<!-- Form --> 
<form role="form" method="post" class="form-horizontal" id="tmbhunit" action="<?= base_url() ?>C_unit/create"> 
<!-- Card Icon --> 
<div class="card-header card-header-icon" data-background-color="red"> 
    <i class="material-icons">account_balance</i> 
</div> 
<!-- End Card Icon --> 

<!-- Card Content --> 
<div class="card-content"> 
    <!-- Card Title --> 
    <h4 class="card-title">Tambah Data</h4> 
    <!-- End Card Title --> 
    <hr> 

    <!-- Label Input --> 
    <div class="row"> 
     <label class="col-sm-2 label-on-left" for="namaunit">Nama Unit</label> 
     <div class="col-sm-4"> 
      <div class="form-group label-floating is-empty"> 
       <label class="control-label"></label> 
       <input type="text" class="form-control" id="namaunit" name="nm_unit" required placeholder="Masukan nama unit.."> 
      </div> 
     </div> 
    </div> 
    <!-- End Label Input --> 
    <!-- Label Input --> 
    <div class="row"> 
     <label class="col-sm-2 label-on-left" for="almtunit">Alamat Unit</label> 
     <div class="col-sm-4"> 
      <div class="form-group label-floating is-empty"> 
       <label class="control-label"></label> 
       <input type="text" class="form-control" id="almtunit" name="alamat" required placeholder="Masukan alamat unit.."> 
       <br> 
       <input type="submit" name="submit" id="btn-submit" class="btn btn-primary btn-fill" value="Tambah" /> 
       <input type="button" name="cancel" class="btn btn-warning btn-fill" value="Cancel" onclick="history.back()" /> 
      </div> 
     </div> 
    </div> 
    <!-- End Label Input --> 

</div> 
<!-- End Card Content --> 
</form> 
<!-- End Form --> 

这是JavaScript的:

$("#tmbhunit").submit(function() { 

var nm_unit = $("#namaunit").val(); 
var almtunit = $("#almtunit").val(); 

swal({ 
    title: "Are you sure?", 
    type: "warning", 
    showCancelButton: true, 
    confirmButtonColor: "#DD6B55", 
    confirmButtonText: "Yes!", 
    cancelButtonText: "Cancel", 
    closeOnConfirm: true 
}, function(isConfirm){ 
    if (isConfirm) { 
    event.preventDefault(); 
     return true; 
    } else { 
    return false; 
    } 
}); 

}); 

实际上,脚本运行,甜警报已经出现还可以,但提前提交不给我一个机会,以确认表,我已经想尽导师,但没有一次工作。

+0

警报异步运行,所以基本上你说这:显示一个提醒,完成提交(提交),等待用户输入,防止默认用户点击警报的“是”(这没有效果)。您需要将'event.preventDefault()'放在'swal()'之外,然后通过代码发布表单(或将提醒移出submit方法)。 –

回答

1

使用之前提交,而不是提交功能,如下图所示

jQuery("body").on("beforeSubmit", "form#tmbhunit", function() { 
    // You logic 
    return false; 
}); 
+0

你测试过这个工作吗? –

+0

是的,这是为我工作。 –

+0

鉴于它*总是*返回false,我不明白怎么可能是这种情况。默认情况下,也没有'beforeSubmit'事件,因此必须由您正在使用的库引发。 –

1

要解决这个问题,你需要总是停在你的jQuery代码的submit事件处理程序的默认行为。

然后,您可以直接从DOM元素提交表单的if声明当用户确认自己的选择,像这样:

$("#tmbhunit").submit(function(e) { 
 
    e.preventDefault(); 
 
    var nm_unit = $("#namaunit").val(); 
 
    var almtunit = $("#almtunit").val(); 
 
    var form = this; 
 

 
    swal({ 
 
    title: "Are you sure?", 
 
    type: "warning", 
 
    showCancelButton: true, 
 
    confirmButtonColor: "#DD6B55", 
 
    confirmButtonText: "Yes!", 
 
    cancelButtonText: "Cancel", 
 
    closeOnConfirm: true 
 
    }, function(isConfirm) { 
 
    if (isConfirm) { 
 
     form.submit(); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script> 
 
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.css" /> 
 
<form role="form" method="post" class="form-horizontal" id="tmbhunit" action="<?= base_url() ?>C_unit/create"> 
 
    <div class="card-header card-header-icon" data-background-color="red"> 
 
    <i class="material-icons">account_balance</i> 
 
    </div> 
 

 
    <div class="card-content"> 
 
    <h4 class="card-title">Tambah Data</h4> 
 
    <hr> 
 
    <div class="row"> 
 
     <label class="col-sm-2 label-on-left" for="namaunit">Nama Unit</label> 
 
     <div class="col-sm-4"> 
 
     <div class="form-group label-floating is-empty"> 
 
      <label class="control-label"></label> 
 
      <input type="text" class="form-control" id="namaunit" name="nm_unit" required placeholder="Masukan nama unit.."> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    <div class="row"> 
 
     <label class="col-sm-2 label-on-left" for="almtunit">Alamat Unit</label> 
 
     <div class="col-sm-4"> 
 
     <div class="form-group label-floating is-empty"> 
 
      <label class="control-label"></label> 
 
      <input type="text" class="form-control" id="almtunit" name="alamat" required placeholder="Masukan alamat unit.."> 
 
      <br> 
 
      <input type="submit" name="submitBtn" id="btn-submit" class="btn btn-primary btn-fill" value="Tambah" /> 
 
      <input type="button" name="cancelBtn" class="btn btn-warning btn-fill" value="Cancel" onclick="history.back()" /> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</form>

+0

谢谢之前,表单提交的工作没有通过甜蜜的警报,但是当我点击'是'按钮,它是什么也没有发生,只是卡住 –

+0

检查控制台是否有错误。正如你可以从上面的代码片段看到的,这应该工作正常 –

+0

@ Z.Norz你想发布这些数据意味着哪个'controllers''函数? –