[英]How to construct date_select values into single date format using Javascript/JQuery?
我的html表單中有一個date_select。 我知道它將月份和年份分開。 我正在嘗試找出如何在Javascript中以YYYY-MM-DD的形式構造日期,以便將該日期發送到我的控制器以與其他日期進行比較。
到目前為止,這是我的知識(我是JQuery / JS初學者):
$(document).on('click', "#check-button", function(){
var year = $("#event_day_1i").val();
var month = $("#event_day_2i").val();
var day = $("#event_day_3i").val();
var selectedDate = [year + "-" + month + "-" + day];
...
$.ajax({
url: '/events/check',
data: {checkList: checkList , selected_date: selectedDate },
method: "POST"
}
);
)};
但這會創建諸如“ 2016-2-4”之類的日期,而不是“ 2016-02-04”。 解決此問題的最佳方法是什么?
如果您有一種解決方案,可以讓我將3個單獨的值發送到控制器中的一個日期中,那么這也很棒,但是我也不知道該如何做(初學者)。
謝謝!
這個想法與@Phillip答案相同。 唯一的區別是整數計數和字符長度計數。
使用parseInt()將其轉換為整數。
使用長度來計算字符或字符串。
這將檢查該值是否為單個字符 ,然后在其后附加“ 0”,例如1將變為“ 01”。
$(document).on('click', "#check-button", function(){
var year = $("#event_day_1i").val();
var month = $("#event_day_2i").val();
var day = $("#event_day_3i").val();
if (day.length < 2) { day = '0' + day; }
if (month.length < 2) { month = '0' + month; }
var selectedDate = [year + "-" + month + "-" + day];
...
$.ajax({
url: '/events/check',
data: {checkList: checkList , selected_date: selectedDate },
method: "POST"
}
);
)};
前面加上“ 0”的另一種方式是使用以下代碼(僅列出了一部分代碼):
day = ("0" + day).slice(-2);
month = ("0" + month).slice(-2);
這是將“ 0”添加到開頭,然后使用最后兩個字符。 請注意,這兩種方法都將這些值返回給字符串。
首先,我要確保用戶在每個字段中都添加了一個數字。 您可以自己進行更廣泛的檢查,但讓我開始使用.parseInt()
JS方法。
在該變量中有整數存儲后,請檢查它是否小於10。也就是說,只能為一位。 您可能還需要檢查它是否也大於0。
知道這一點后,將其前面的字符串“ 0”合並起來。 即: 9
變為09
。
$(document).on('click', "#check-button", function(){
var year = $("#event_day_1i").val();
var month = $("#event_day_2i").val();
var day = $("#event_day_3i").val();
month = month.parseInt();
day = day.parseInt();
if (month < 10) {
month = "0" + month;
}
if (day < 10) {
day = "0" + day;
}
var selectedDate = [year + "-" + month + "-" + day];
...
$.ajax({
url: '/events/check',
data: {checkList: checkList , selected_date: selectedDate },
method: "POST"
}
);
)};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.