[英]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.