삭제하기 전에 확인 메시지를 표시하는 방법은 무엇입니까?


204

삭제 (버튼 또는 이미지)를 클릭하면 확인 메시지 를 받고 싶습니다 . 사용자가 ' Ok'를 선택하면 삭제가 수행되고 그렇지 않으면 ' Cancel'를 클릭하면 아무 일도 일어나지 않습니다.

버튼을 클릭 할 때 에코를 시도했지만 에코로 인해 입력 상자와 텍스트 상자의 스타일과 디자인이 손실됩니다.

답변:


330

onclick버튼 이있는 경우 이것을 작성하십시오 .

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

훌륭한 답변! 짧고 정확하며 효율적으로 작동
John

경험이없는 JavaScript 사용자에게는 코드 라인이 의미가 없으며 예제는 결정적이지 않고 혼란스러워 보입니다. 그럼에도 불구하고 좋은 대답입니다.
사무엘 람잔

답변에 세부 정보를 추가해야한다고 생각합니다. 왜 헤드 섹션이나 외부 파일에 코드를 작성하지 않고 버튼 안에 코드를 삽입합니까? 이것은 매우 일반적인 기능이며 프로그래머는 여러 버튼에 여러 번 사용하기를 원할 수 있습니다. 하나의 특정 버튼
안에는 쓰지 않겠습니다

285

다음과 같이 더 잘 사용할 수 있습니다

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

2
이것은 스레드에서 길 위에 있어야합니다. 간단하고 빠르며 효과적입니다. 일을 완벽하게 수행합니다.
DonExo

매우 위험한! Javascript가 꺼져 있으면 어떻게됩니까? 또는 스파이더 / 검색 봇이이 페이지를 읽을 수 있습니까? 그런 다음 모든 링크를 따르고 모든 것을 삭제합니다! 일부 브라우저 플러그인은 페이지의 모든 링크를 따라 미리 캐시합니다. 절대 이런 식으로하지 마십시오! 삭제는 절대 GET 요청이 아니어야합니다.
Daniele Testa

# 1 up boated 답변보다 덜 위험하지 않습니다. JavaScript가 꺼져 있으면 JavaScript가 위험합니다. JavaScript를 켜거나 끄는 것은 사용자가 개인적으로 선택하는 것입니다. JavaScript가 꺼져 있으면 사용자는 웹 사이트의 어떤 버튼도 누르지 않는 것이 좋습니다. 훌륭한 대안으로 항상 서버 측 검증이 있습니다.
사무엘 람잔

53

이것은 눈에 거슬리지 않는 JavaScript와 확인 메시지가 HTML로 유지되는 방법입니다.

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

이것은 IE 9 이상과 호환되는 순수한 바닐라 JS입니다.

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');
      }
  });
}

실제로 참조하십시오 : http://codepen.io/anon/pen/NqdKZq


이것은 완벽하게 작동하지만 첫 번째 버튼에서만 작동합니다. 우리가 20 개 이상을 좋아한다면? 감사!
emotality

1
맞습니다. querySelector가 첫 번째 요소와 만 일치하기 때문입니다. 답변을 편집하고 querySelectorAll을 대신 사용하도록 코드 펜을 포크했습니다.
DevAntoine

이 예제가 JavaScript를 비활성화하고 작동하도록 편집하면 href="https://stackoverflow.com/delete"멋질 것입니다. 예를 들어 충분하다고 생각합니다. 또는 양식 제출 예제입니다.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

1
@CiroSantilli 巴拿馬 文件 六四 事件 法轮功 event.preventDefault () 함수 덕분에 이미 그렇습니다. 해시 문자를 URL로 바꿀 수 있으며 트리거되지 않습니다. 그러나 JavaScript가 비활성화되면 링크가 예상대로 작동합니다.
DevAntoine

1
@CiroSantilli 巴拿馬 文件 六四 事件 法轮功 여기 당신은 간다;)
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()">

리턴 포인트가 1 개만있는 것이 좋습니다. 그래서 나는 선호한다
jedi

17
아니면 그냥 return confirm("…"). 부울 변수를 할당 한 다음 if / else로 분기 할 필요가 없습니다.
slhck

16

이 시도. 그것은 나를 위해 작동

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

1
아름답고 효율적입니다.
사무엘 람잔

13

매우 간단하고 한 줄의 코드입니다.

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

허용 된 anwer 바로 아래에 이와 같은 답변이 이미있는 것 같습니다.
모자

12

user1697128 개선 (아직 댓글을 달 수 없기 때문에)

<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>

취소를 누르면 양식 제출이 취소됩니다.


8

나는 이것을하는 방법을 제공하고 싶다 :

<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">

자바 스크립트

<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>

jQuery 사용하기 :

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

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

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

DevAntoines 답변의 좋은 jQuery 적응 ( stackoverflow.com/a/19973570/1337887 ). 그러나 좀 더 일반화 된 방법은 "$ ( '. delete')"대신 "$ ( 'A [data-confirm]')"을 사용하는 것입니다. 그렇게하면 버튼을 삭제 클래스가 필요하지 않고 대신 데이터 확인 속성을 통합하십시오.
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

CSS 형식을 사용한 빠른 예쁜 솔루션에 관심이 있다면 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

PHP & MySQL에서 무언가를 삭제할 때 형태 메시지를 설정하려면 ...

이 스크립트 코드를 사용하십시오 :

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

이 HTML 코드를 사용하십시오 :

<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

jQuery 사용하기 :

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

1

나는 이것이 오래 되었다는 것을 알고 있지만 나는 대답이 필요하지만 이것들 중 하나는 아니지만 alpesh 의 대답은 나를 위해 일했고 같은 문제가있는 사람들과 공유하고 싶었습니다.

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

일반 버전 :

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

내 PHP 버전 :

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

이것은 공개적으로 올바른 방법이 아닐 수도 있지만 개인 사이트에서 나에게 도움이되었습니다. :)


1

매우 간단합니다

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>

그것에 대한 귀하의 링크 :

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

0

onclick 핸들러는 함수 호출 후 false를 리턴해야합니다. 예를 들어.

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


0

가장 간단한 눈에 띄지 않는 해결책은 다음과 같습니다.

링크:

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

자바 스크립트 :

$('.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

다음은 className과 바인딩 이벤트를 사용하는 순수 JS의 또 다른 간단한 예입니다.

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>

사용 하여이 함수를 호출 onClick


0

"삭제 확인 메시지"의 경우 다음을 사용하십시오.

                       $.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

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"는 삭제 작업 중에 매개 변수를 전달하려는 모든 각도 변수입니다.

앱 모듈 내부의 Angularjs 코드

$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

옵션 상자를 선택하는 것이 훨씬 어렵습니다. 해결책은 다음과 같습니다.

<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

나는이 방법을 사용하고 있습니다 (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>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.