دسته بندی ها
06:54 1399/07/06

چرا مقدار برگشتی sweetAlert همواره یک مقدار است؟

مشخصات سوال کننده :
کاربر : Kpa91     امتیاز کاربر : 12     رتبه کاربر : 59
دسته بندی : جاوا اسکریپت SweetAlert

به این سوال امتیاز بدهید    1
تعداد بازدید این سوال : 3088
1 نظر
saedbfd : در این مثال مقدار پارامتر result چجوری مشخص میشه؟

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 11:13 1399/07/06
هوش مصنوعی

پاسخ هوش مصنوعی

مشکل شما به نحوه چک کردن نتیجه در callback مربوط می شود. در حال حاضر، شما فقط از `if (result)` استفاده کرده اید که نتیجه را به درستی بررسی نمی کند. در واقع `result` یک شی است و شما باید بررسی کنید که آیا کاربر دکمه تأیید (`confirm`) یا دکمه لغو (`cancel`) را فشار داده است. برای این کار باید از `result.isConfirmed` استفاده کنید.

کد اصلاح شده شما به صورت زیر خواهد بود:

<html>
<head>
    <script type="text/javascript" language="javascript" src="sweetalert2.min.js"></script>   
    <link rel="stylesheet" type="text/css" href="sweetalert2.css" />    
    <script type="text/javascript" language="javascript">

function kk()
{
  Swal.fire({
    title: 'Are you sure?',
    text: "You won't be able to revert this!",
    icon: 'warning',
    showCancelButton: true,
    confirmButtonColor: '#3085d6',
    cancelButtonColor: '#d33',
    confirmButtonText: 'Yes'
  }).then((result) => {
       if (result.isConfirmed) alert('Yes'); else alert('No');
    });
}
</script>
</head>
<body>
<input type="button" id="pop" value="click me" onclick="kk()">
</body>
</html>

با این تغییر، حالا تابع شما به درستی مقدار برگشتی را بر اساس انتخاب کاربر نشان خواهد داد.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : Kpa91 20:18 1399/07/07

مقدار پارامتر result از then میاد وقتی swal به پرانتز انتهایی میرسد اگر پشت سر آن .then بیاید حاصل دکمه انتخاب شده در متغیر جلو then یعنی result ذخیره میشود حالا اگر result مقدار true  باشد یعنی دکمه تایید (بله یا ok) انتخاب شده و در غیر اینصورت دکمه لغو (cancel) انتخاب شده اما در سوال من این اتفاق در asp  نمی افتد ولی در یک فایل ساده html اتفاق می افتد

به این پاسخ امتیاز بدهید    0
امتیاز: 12 رتبه: 59
پاسخ دهنده : Kpa91 08:07 1399/07/13

در نهایت مشکل رو خودم از سایت Sweetalert یافتم  جواب شد این 

then((result) => {
  if (result.value) 
    document.getElementById("HidDel").value=1;
  else if (result.dismiss === Swal.DismissReason.cancel) {
    document.getElementById("HidDel").value=0;   
});

 

به این پاسخ امتیاز بدهید    0
امتیاز: 12 رتبه: 59
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود