Làm thế nào để hiển thị một thông báo xác nhận trước khi xóa?


204

Tôi muốn nhận được thông báo xác nhận khi nhấp vào xóa (đây có thể là nút hoặc hình ảnh). Nếu người dùng chọn ' Ok' thì xóa xong, nếu không Cancelthì nhấp vào ' ' sẽ không có gì xảy ra.

Tôi đã thử lặp lại điều này khi nhấp vào nút, nhưng công cụ lặp lại làm cho hộp đầu vào và hộp văn bản của tôi mất kiểu dáng và thiết kế.

Câu trả lời:


330

Viết cái này trong onclicktrường hợp nút:

var result = confirm("Want to delete?");
if (result) {
    //Logic to delete the item
}

câu trả lời tuyệt vời! ngắn gọn, chính xác và hoạt động hiệu quả
John

Đối với bất kỳ người không có kinh nghiệm JavaScript nào, các dòng mã của bạn không có ý nghĩa gì, ví dụ này có vẻ không thuyết phục và khó hiểu. Tuy nhiên, đó là một câu trả lời tốt.
Samuel Ramzan

Tôi nghĩ bạn nên thêm một số chi tiết cho câu trả lời của bạn. Tại sao bạn chèn mã bên trong nút thay vì viết mã trong phần đầu hoặc vào một tệp bên ngoài? Đây là một chức năng rất chung chung và lập trình viên có thể muốn sử dụng nó nhiều lần cho một số nút, tôi sẽ không viết nó trong một nút cụ thể duy nhất ...
franz1

286

Bạn có thể sử dụng tốt hơn như sau

 <a href="url_to_delete" onclick="return confirm('Are you sure you want to delete this item?');">Delete</a>

2
Điều này nên được lên trong chủ đề. Đơn giản, nhanh chóng, hiệu quả. Có công việc hoàn hảo.
DonExo

Rất nguy hiểm! Nếu Javascript đã bị tắt thì sao? Hoặc nếu một con nhện / bot tìm kiếm sẽ đọc trang này? Sau đó nó sẽ theo tất cả các liên kết và xóa tất cả mọi thứ! Một số plugin trình duyệt cũng theo tất cả các liên kết trên một trang để lưu trước bộ đệm đó. KHÔNG BAO GIỜ làm theo cách này! Xóa không bao giờ nên là một yêu cầu NHẬN.
Daniele Testa

Nó không kém phần nguy hiểm so với câu trả lời được nêu lên số 1, bất kỳ JavaScript nào cũng nguy hiểm nếu JavaScript bị tắt. JavaScript được bật hoặc tắt là lựa chọn cá nhân của người dùng, nếu JavaScript bị tắt, người dùng nên biết rõ hơn không nên nhấn bất kỳ nút nào trên bất kỳ trang web nào. Luôn luôn xác minh phía máy chủ như một sự thay thế tuyệt vời.
Samuel Ramzan

53

Đây là cách bạn sẽ làm điều đó với JavaScript không phô trương và thông báo xác nhận được giữ trong HTML.

<a href="/delete" class="delete" data-confirm="Are you sure to delete this item?">Delete</a>

Đây là JS vanilla thuần túy, tương thích với IE 9+:

var deleteLinks = document.querySelectorAll('.delete');

for (var i = 0; i < deleteLinks.length; i++) {
  deleteLinks[i].addEventListener('click', function(event) {
      event.preventDefault();

      var choice = confirm(this.getAttribute('data-confirm'));

      if (choice) {
        window.location.href = this.getAttribute('href');
      }
  });
}

Xem nó trong hành động: http://codepen.io/anon/pen/NqdKZq


Điều này hoạt động hoàn hảo, nhưng chỉ hoạt động cho nút đầu tiên. Điều gì nếu chúng ta có từ 20 người trở lên? Cảm ơn!
emotality

1
Bạn nói đúng, đó là do querySelector chỉ khớp với phần tử đầu tiên. Tôi đã chỉnh sửa câu trả lời và rẽ nhánh codepen để sử dụng querySelectorAll thay thế.
DevAntoine

Sẽ rất tuyệt nếu ví dụ này được chỉnh sửa để cũng hoạt động với JavaScript bị vô hiệu hóa, ví dụ như href="https://stackoverflow.com/delete"tôi nghĩ là đủ. Hoặc một ví dụ gửi mẫu.
Ciro Santilli 郝海东 冠状 病 事件

1
@CiroSantilli 巴拿馬 件 Đã xảy ra trường hợp này nhờ vào hàm event.preventDefault (). Bạn có thể thay thế char băm bằng một url, nó sẽ không được kích hoạt. Nhưng, nếu JavaScript bị vô hiệu hóa, liên kết sẽ hoạt động như mong đợi.
DevAntoine

1
@CiroSantilli 巴拿馬 件 事件 Ở đây bạn đi;)
DevAntoine

28
function ConfirmDelete()
{
  var x = confirm("Are you sure you want to delete?");
  if (x)
      return true;
  else
    return false;
}


<input type="button" onclick="ConfirmDelete()">

Tôi nghĩ rằng tốt hơn là chỉ có 1 điểm trở lại. vì vậy tôi thích
jedi

17
Hoặc chỉ return confirm("…"). Không cần gán biến là boolean và sau đó rẽ nhánh vào if / other.
slhck

16

Thử cái này. Nó làm việc cho tôi

 <a href="delete_methode_link" onclick="return confirm('Are you sure you want to Remove?');">Remove</a>

1
Đẹp và hiệu quả.
Samuel Ramzan

13

nó rất đơn giản và một dòng mã

<a href="#" title="delete" class="delete" onclick="return confirm('Are you sure you want to delete this item')">Delete</a>

Có vẻ như đã có một câu trả lời như thế này ngay bên dưới anwer được chấp nhận.

12

cải thiện trên user1697128 (vì tôi chưa thể nhận xét về nó)

<script>
    function ConfirmDelete()
    {
      var x = confirm("Are you sure you want to delete?");
      if (x)
          return true;
      else
        return false;
    }
</script>    

<button Onclick="return ConfirmDelete();" type="submit" name="actiondelete" value="1"><img src="images/action_delete.png" alt="Delete"></button>

sẽ hủy gửi biểu mẫu nếu hủy bỏ được nhấn


8

Tôi muốn cung cấp cách tôi làm điều này:

<form action="/route" method="POST">
<input type="hidden" name="_method" value="DELETE"> 
<input type="hidden" name="_token" value="the_token">
<button type="submit" class="btn btn-link" onclick="if (!confirm('Are you sure?')) { return false }"><span>Delete</span></button>
</form>

6

HTML

<input onclick="return myConfirm();" type="submit" name="deleteYear" class="btn btn-danger" value="Delete">

Javascript

<script>
function myConfirm() {
  var result = confirm("Want to delete?");
  if (result==true) {
   return true;
  } else {
   return false;
  }
}


4

HTML:

<a href="#" class="delete" data-confirm="Are you sure to delete this item?">Delete</a>

Sử dụng jQuery:

$('.delete').on("click", function (e) {
    e.preventDefault();

    var choice = confirm($(this).attr('data-confirm'));

    if (choice) {
        window.location.href = $(this).attr('href');
    }
});

Một sự thích ứng jQuery tốt của câu trả lời DevAntoines ( stackoverflow.com/a/19973570/1337887 ). Tuy nhiên, một cách tiếp cận tổng quát hơn một chút sẽ là sử dụng "$ ('A [xác nhận dữ liệu]')" thay vì "$ ('. Xóa')". Theo cách đó, bạn không cần các nút để có lớp xóa mà thay vào đó chỉ tích hợp thuộc tính xác nhận dữ liệu.
Florian


4
<a href="javascript:;" onClick="if(confirm('Are you sure you want to delete this product')){del_product(id);}else{ }" class="btn btn-xs btn-danger btn-delete" title="Del Product">Delete Product</a>

<!-- language: lang-js -->
<script>
function del_product(id){
    $('.process').css('display','block');
    $('.process').html('<img src="./images/loading.gif">');
    $.ajax({
        'url':'./process.php?action=del_product&id='+id,
        'type':"post",
        success: function(result){
            info=JSON.parse(result);
            if(result.status==1){
                setTimeout(function(){
                    $('.process').hide();
                    $('.tr_'+id).hide();
                },3000);
                setTimeout(function(){
                    $('.process').html(result.notice);
                },1000);
            } else if(result.status==0){
                setTimeout(function(){
                    $('.process').hide();
                },3000);
                setTimeout(function(){
                    $('.process').html(result.notice);
                },1000);
            }
        }
    });
}
</script>


3

Nếu bạn quan tâm đến một số giải pháp khá nhanh với định dạng css được thực hiện, bạn có thể sử dụng SweetAlert

$(function(){
  $(".delete").click(function(){
      swal({   
	  	  title: "Are you sure?",   
		  text: "You will not be able to recover this imaginary file!",   
		  type: "warning",   
		  showCancelButton: true,   
	  	  confirmButtonColor: "#DD6B55",   
	  	  confirmButtonText: "Yes, delete it!",   
	  	  closeOnConfirm: false 
	  }, 
	  function(isConfirmed){ 
        if(isConfirmed) {
          $(".file").addClass("isDeleted");
          swal("Deleted!", "Your imaginary file has been deleted.", "success"); 
        }
      }
    );
  });
});
html { zoom: 0.7 } /* little "hack" to make example visible in stackoverflow snippet preview */
body > p { font-size: 32px }

.delete { cursor: pointer; color: #00A }
.isDeleted { text-decoration:line-through }
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script src="http://t4t5.github.io/sweetalert/dist/sweetalert-dev.js"></script>
<link rel="stylesheet" href="http://t4t5.github.io/sweetalert/dist/sweetalert.css">

<p class="file">File 1 <span class="delete">(delete)</span></p>


2

để đặt một thông báo định dạng khi bạn xóa một cái gì đó trong php & mysql ...

sử dụng mã script này:

<script>
    function Conform_Delete()
    {
       return conform("Are You Sure Want to Delete?");
    }
</script>

sử dụng mã html này:

<a onclick="return Conform_Delete()" href="#">delete</a>

2
var txt;
var r = confirm("Press a button!");
if (r == true) {
   txt = "You pressed OK!";
} else {
   txt = "You pressed Cancel!";
}

var txt;
var r = confirm("Press a button!");
if (r == true) {
    txt = "You pressed OK!";
} else {
    txt = "You pressed Cancel!";
}


1

Sử dụng jQuery:

$(".delete-link").on("click", null, function(){
        return confirm("Are you sure?");
    });

1

Tôi biết điều này đã cũ, nhưng tôi cần một câu trả lời và không phải câu trả lời nào ngoài câu trả lời của alpesh có hiệu quả với tôi và muốn chia sẻ với những người có thể có cùng một vấn đề.

<script>    
function confirmDelete(url) {
    if (confirm("Are you sure you want to delete this?")) {
        window.open(url);
    } else {
        false;
    }       
}
</script>

Phiên bản bình thường:

<input type="button" name="delete" value="Delete" onClick="confirmDelete('delete.php?id=123&title=Hello')">

Phiên bản PHP của tôi:

$deleteUrl = "delete.php?id=" .$id. "&title=" .$title;
echo "<input type=\"button\" name=\"delete\" value=\"Delete\" onClick=\"confirmDelete('" .$deleteUrl. "')\"/>";

Đây có thể không phải là cách chính xác để thực hiện công khai nhưng điều này làm việc cho tôi trên một trang web riêng tư. :)


1

Nó rất đơn giản

function archiveRemove(any) {
    var click = $(any);
    var id = click.attr("id");
    swal.fire({
        title: 'Are you sure !',
           text: "?????",
           type: 'warning',
           showCancelButton: true,
           confirmButtonColor: '#3085d6',
           cancelButtonColor: '#d33',
           confirmButtonText: 'yes!',
           cancelButtonText: 'no'
    }).then(function (success) {
        if (success) {
            $('a[id="' + id + '"]').parents(".archiveItem").submit();
        }
    })
}

0
function del_confirm(msg,url)
        {
            if(confirm(msg))
            {
                window.location.href=url
            }
            else
            {
                false;
            }

        }



<a  onclick="del_confirm('Are you Sure want to delete this record?','<filename>.php?action=delete&id=<?<id> >')"href="#"></a>

0
<SCRIPT LANGUAGE="javascript">
function Del()
{
var r=confirm("Are you sure?")
if(r==true){return href;}else{return false;}
}
</SCRIPT>

liên kết của bạn cho nó:

<a href='edit_post.php?id=$myrow[id]'> Delete</a>

0

Trình xử lý onclick sẽ trả về false sau khi gọi hàm. Ví dụ.

onclick="ConfirmDelete(); return false;">


0

Tôi nghĩ rằng giải pháp đơn giản nhất không phô trương sẽ là:

Liên kết:

<a href="http://link_to_go_to_on_success" class="delete">Delete</a>

Javascript:

$('.delete').click(function () {
    return confirm("Are you sure?");
});

0
<a href="javascript:;" onClick="if(confirm('Are you sure you want to delete this product')){del_product(id);}else{ }" class="btn btn-xs btn-danger btn-delete" title="Del Product">Delete Product</a>


function del_product(id){
    $('.process').css('display','block');
    $('.process').html('<img src="./images/loading.gif">');
    $.ajax({
        'url':'./process.php?action=del_product&id='+id,
        'type':"post",
        success: function(result){
            info=JSON.parse(result);
            if(result.status==1){
            setTimeout(function(){
                    $('.process').hide();
                    $('.tr_'+id).hide();
                },3000);
                setTimeout(function(){
                    $('.process').html(result.notice);
                },1000);
            }else if(result.status==0){
                setTimeout(function(){
                    $('.process').hide();
                },3000);
                setTimeout(function(){
                    $('.process').html(result.notice);
                },1000);

                }
            }
        });
}

0

Đây là một ví dụ đơn giản khác trong JS thuần sử dụng className và sự kiện ràng buộc với nó.

var eraseable =  document.getElementsByClassName("eraseable");

for (var i = 0; i < eraseable.length; i++) {
    eraseable[i].addEventListener('click', delFunction, false); //bind delFunction on click to eraseables
}

function delFunction(){        
     var msg = confirm("Are you sure?");      
     if (msg == true) { 
        this.remove(); //remove the clicked element if confirmed
    }   
  };
<button class="eraseable">
<img class="eraseable" src="http://zelcs.com/wp-content/uploads/2013/02/stackoverflow-logo-dumpster.jpg" style="width:100px;height:auto;">
Delete me</button>

<button class="eraseable">
<img class="eraseable" src="http://zelcs.com/wp-content/uploads/2013/02/stackoverflow-logo-dumpster.jpg" style="width:100px;height:auto;">
Delete me</button>

<button class="eraseable">
<img class="eraseable" src="http://zelcs.com/wp-content/uploads/2013/02/stackoverflow-logo-dumpster.jpg" style="width:100px;height:auto;">
Delete me</button>


0
<script>
function deleteItem()
{
   var resp = confirm("Do you want to delete this item???");
   if (resp == true) {
      //do something
   } 
   else {
      //do something
   }
}
</script>

gọi hàm này bằng onClick


0

Đối với "thông báo xác nhận khi xóa", hãy sử dụng:

                       $.ajax({
                        type: "POST",
                        contentType: "application/json; charset=utf-8",
                        url: "Searching.aspx/Delete_Student_Data",
                        data: "{'StudentID': '" + studentID + "'}",
                        dataType: "json",
                        success: function (data) {
                            alert("Delete StudentID Successfully");
                            return true;
                        }

0

Angularjs với Javascript Xóa ví dụ

Mã HTML

<button ng-click="ConfirmDelete(single_play.play_id)" type="submit" name="actiondelete" value="1"><img src="images/remove.png" alt="Delete"></button>

"single_play.play_id" là bất kỳ biến angularjs nào, giả sử bạn muốn truyền bất kỳ tham số nào trong hành động xóa

Mã Angularjs bên trong mô-đun ứng dụng

$scope.ConfirmDelete = function(yy)
        {
            var x = confirm("Are you sure you want to delete?");
            if (x) {
             // Action for press ok
                $http({
                method : 'POST',
                url : 'sample.php',
                headers: {'Content-Type': 'application/x-www-form-urlencoded'},
                data: $.param({ delete_play_id : yy})
                }).then(function (response) { 
                $scope.message = response.data;
                });
            }
            else {
             //Action for cancel
                return false;
            }
        } 

0

Nó khó hơn nhiều để làm điều đó cho các hộp tùy chọn. Đây là giải pháp:

<select onchange="if (this.value == 'delete' && !confirm('THIS ACTION WILL DELETE IT!\n\nAre you sure?')){this.value=''}">
    <option value=''> &nbsp; </option>
    <option value="delete">Delete Everything</option>
</select>

0

Tôi đang sử dụng cách này (trong laravel) -

<form id="delete-{{$category->id}}" action="{{route('category.destroy',$category->id)}}" style="display: none;" method="POST">
 @csrf
 @method('DELETE')
</form>

<a href="#" onclick="if (confirm('Are you sure want to delete this item?')) {
           event.preventDefault();
           document.getElementById('delete-{{$category->id}}').submit();
         }else{
           event.preventDefault();
         }">
  <i class="fa fa-trash"></i>
</a>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.