ما لم أفقد شيئًا ما في المستندات ، أجد أنه من السخف أنه إذا قمت بإنشاء swal يحتوي على أزرار متعددة بقيم مختلفة مقترنة بحقل إدخال ، فلن يتم إرجاع قيمة الإدخال باستخدام كود swal الأصلي. هذا يبتعد حقًا عن الإمكانات التي تقدمها SweetAlert.
هل تقصد أنك تريد كلاً من زر التأكيد وبعض الأزرار الأخرى لإرجاع قيمة الإدخال؟ هل يمكنك أن تشرح بالتفصيل ماهية حالة الاستخدام الخاصة بك بالضبط؟ :)
@ 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 يجب أن
نأمل أن توضح حالة الاستخدام هذه أهمية إعادة كلتا القيمتين. يسمح للمطورين بعدم الاضطرار إلى اختراق طريقهم حول الأشياء أو إنشاء تنبيهين لإنجاز ما يجب أن يكون عملية من خطوة واحدة.
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
) مع حقل إدخال وزرين: تأكيد + إلغاء. سأستخدم حل
التعليق الأكثر فائدة
@ t4t5 يجب أن
نأمل أن توضح حالة الاستخدام هذه أهمية إعادة كلتا القيمتين. يسمح للمطورين بعدم الاضطرار إلى اختراق طريقهم حول الأشياء أو إنشاء تنبيهين لإنجاز ما يجب أن يكون عملية من خطوة واحدة.
المقتطف أعلاه هو طريقتي "المخترقة" للحصول على قيم المحتوى والأزرار. ومع ذلك ، كما تم التعبير عنه سابقًا في هذا الموضوع ، سيكون من الأجمل بكثير أن تقوم بإرجاع كلتا القيمتين.