جافا سكريبت - تنسيق عرض اختيار التاريخ والوقت في Bootstrap مقابل تنسيق القيمة
أنا أستخدم الملحق التالي لاختيار التاريخ والوقت.
https://eonasdan.github.io/bootstrap-datetimepicker/
يعمل بشكل رائع في معظم الحالات. ومع ذلك، في بعض الحالات أعرض التاريخ في حقل الإدخال بصيغة MM/DD/YYYY، لكن عند الإرسال إلى الخادم، أحتاجه بصيغة YYYY-MM-DD
ما هي أفضل طريقة لتحقيق ذلك؟ أفكر في تجاوز دالة الإرسال للنموذج. لكنني أرغب في تجنب ذلك نوعًا ما حيث أود العثور على طريقة للقيام بكل ذلك باستخدام أحداثهم بحيث أتمكن من احتواء الكود في مكان واحد بدلاً من إضافة الكثير من المنطق لكل نموذج.
الإجابة رقم 1
قد تعمل شيفرة آشِش وكريس، ولكن بما أن مُحدد التاريخ في Bootstrap 3 يتطلب Moment.js، فلماذا لا تستخدم Moment.js Parse (لتحليل التاريخ من تنسيقك المخصص أو المحلي المُختار لمحدد التاريخ) وMoment.js Format (لتحويل التاريخ إلى تنسيق ISO على سبيل المثال ليتم إرساله إلى وحدة تحكم ASP.NET أو نقاط نهاية أخرى تقبل هذا النوع من التنسيق للوقت والتاريخ)؟
لذا سيكون الكود أقصر بكثير، مثل هذا:
$('#datetimepicker1').on("dp.change",
function (e) {
var submitDateString = '';
if (e.Date) {
submitDateString = e.Date.format();
}
$("#datetime-submit").val(submitDateString);
});
ملاحظة (انظر التعليق أدناه): e.Date قد تحتاج إلى أن تكون e.date لتعمل.
شرح :
- حدث dp.change (e) يحتوي على خاصية Date، وهي كائن moment، لذلك لا تحتاج حتى للقلق بشأن صيغة التاريخ التي اخترتها لمحدد التاريخ.
- عندما يتم مسح منتقي التاريخ، يكون e.Date خطأ، ومن ثم يتم فحص if.
- $ ("#datepicker1") هو حقل الإدخال الذي أربط به محدد التاريخ الخاص بـ Bootstrap.
- $ ("#datetime-submit") هو حقل الإدخال المخفي الخاص بي.
للرد على السؤال الأصلي، إذا كان التنسيق المطلوب للإرسال هو "YYYY-MM-DD"، فاستخدم:
submitDateString = e.Date.format("YYYY-MM-DD");
لقد اكتشفت للتو Moment.js وأحببته. استخدمه لتسهيل تحليل وعرض التواريخ.
الإجابة رقم 2
أنا أيضاً أواجه نفس المشكلة، وقد حليت هذه المشكلة باستخدام عنصر تحكم مخفي.
في حقل الإدخال المعروض عرض التاريخ بصيغة MM/DD/YYYY
وأخذ قيمة مخفية أخرى محفوظة في YYYY/MM/DD
وعند حدث التغيير لمحدد تاريخ العرض، قم بتحويل MM/DD/YYYY إلى صيغة YYYY/MM/DD باستخدام جافا سكريبت وضعها في حقل القيمة المخفية
