Sweetalert: العديد من الأزرار مجتمعة مع إدخال ترجع فقط قيمة الزر

تم إنشاؤها على ٣١ أكتوبر ٢٠١٧  ·  6تعليقات  ·  مصدر: t4t5/sweetalert

ما لم أفقد شيئًا ما في المستندات ، أجد أنه من السخف أنه إذا قمت بإنشاء swal يحتوي على أزرار متعددة بقيم مختلفة مقترنة بحقل إدخال ، فلن يتم إرجاع قيمة الإدخال باستخدام كود swal الأصلي. هذا يبتعد حقًا عن الإمكانات التي تقدمها SweetAlert.

التعليق الأكثر فائدة

@ t4t5 يجب أن

نأمل أن توضح حالة الاستخدام هذه أهمية إعادة كلتا القيمتين. يسمح للمطورين بعدم الاضطرار إلى اختراق طريقهم حول الأشياء أو إنشاء تنبيهين لإنجاز ما يجب أن يكون عملية من خطوة واحدة.

example

        banPlayer: function (data) {
            var swalField = document.createElement('input');
            swalField.setAttribute("placeholder", "Reason for ban");
            swal({
                title: 'Banning: ' + data.name,
                buttons: {
                    cancel: "Go back!",
                    day: {
                      text: "24hr",
                      visible: true,
                      closeModal: true
                    },
                    week: {
                      text: "1w",
                      visible: true,
                      closeModal: true
                    },
                    perm: {
                      text: "Forever",
                      visible: true,
                      closeModal: true
                    }
                  },
                  content: swalField,
                dangerMode: true
            }).then( value => {
                let reason = swalField.value;
                // build API query request and submit it
            });

المقتطف أعلاه هو طريقتي "المخترقة" للحصول على قيم المحتوى والأزرار. ومع ذلك ، كما تم التعبير عنه سابقًا في هذا الموضوع ، سيكون من الأجمل بكثير أن تقوم بإرجاع كلتا القيمتين.

ال 6 كومينتر

هل تقصد أنك تريد كلاً من زر التأكيد وبعض الأزرار الأخرى لإرجاع قيمة الإدخال؟ هل يمكنك أن تشرح بالتفصيل ماهية حالة الاستخدام الخاصة بك بالضبط؟ :)

@ t4t5 ربما يتعلق الأمر بـ هذا.

swal({
    buttons: {
        cancel: "Go back!",
        one: {
          text: "Button One",
          value: 1
        },
        two: {
          text: "Button Two",
          value: 2
        },
        three: {
          text: "Button Three",
          value: 3
        }
      },
      content: {
        element: "input",
        attributes: {
          placeholder: "What's your favorite food?",
          type: "text",
        },
      }
/*
 * Only returns one value, because input is overridden by buttons
 * so you never get the input's value and the button's value
 * just the button's value.
 */
}).then( value => {
    switch (value) {                  
        case 1:
            swal("You pressed one!")
            break;
        case 2:
            swal("You pressed two!")
            break;
        case 3:
            swal("You pressed three!")
            break;
        default:
            swal("Phew, got outta there.");
    }
});

سيكون من المفيد جدًا أن يكون لديك القدرة على استخدام قيمة الزر وكذلك أيًا كانت قيمة الإدخال لتنفيذ المنطق بدلاً من التنبيهات المتداخلة والحصول على مدخلات غير مجدية لأنه يتم تجاوزها بواسطة الأزرار.

+1 للحصول على قيمة كل من button و content

إذا قمت بتعيين أحد مفاتيح الزر على "تأكيد" ، فسيعيد قيمة الإدخال. على سبيل المثال:

swal({
  buttons: {
    cancel: "Go back!",
    one: {
      text: "Button One",
      value: 1
    },
    two: {
      text: "Button Two",
      value: 2
    },
    confirm: {
      text: "Button Three",
    }
  },
  content: {
    element: "input",
    attributes: {
      placeholder: "What's your favorite food?",
      type: "text",
    },
  }
})

هل هذا كافٍ لحالة الاستخدام الخاصة بك ، أم أنك تقصد أن كل زر يجب أن يُرجع كلاً من قيمة الإدخال وقيمة الزر؟

@ t4t5 يجب أن

نأمل أن توضح حالة الاستخدام هذه أهمية إعادة كلتا القيمتين. يسمح للمطورين بعدم الاضطرار إلى اختراق طريقهم حول الأشياء أو إنشاء تنبيهين لإنجاز ما يجب أن يكون عملية من خطوة واحدة.

example

        banPlayer: function (data) {
            var swalField = document.createElement('input');
            swalField.setAttribute("placeholder", "Reason for ban");
            swal({
                title: 'Banning: ' + data.name,
                buttons: {
                    cancel: "Go back!",
                    day: {
                      text: "24hr",
                      visible: true,
                      closeModal: true
                    },
                    week: {
                      text: "1w",
                      visible: true,
                      closeModal: true
                    },
                    perm: {
                      text: "Forever",
                      visible: true,
                      closeModal: true
                    }
                  },
                  content: swalField,
                dangerMode: true
            }).then( value => {
                let reason = swalField.value;
                // build API query request and submit it
            });

المقتطف أعلاه هو طريقتي "المخترقة" للحصول على قيم المحتوى والأزرار. ومع ذلك ، كما تم التعبير عنه سابقًا في هذا الموضوع ، سيكون من الأجمل بكثير أن تقوم بإرجاع كلتا القيمتين.

مثال آخر سيكون نموذجًا ( closeOnEsc: false, closeOnClickOutside: false ) مع حقل إدخال وزرين: تأكيد + إلغاء. سأستخدم حل

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

rafatux picture rafatux  ·  5تعليقات

mateuszjarzewski picture mateuszjarzewski  ·  4تعليقات

jamieson99 picture jamieson99  ·  3تعليقات

daftspunk picture daftspunk  ·  4تعليقات

sastrahost picture sastrahost  ·  5تعليقات