Oke所以这是一个'可爱'的问题:
我有一个包含日期(和其他信息)的列表,这些日期是由我的控制器传递给页面的模型填充的。
这就是我创建表格的方式:
@Html.Grid(Model).Named("grid").Columns(columns =>
{
columns.Add()
.Encoded(false)
.Sanitized(false)
.SetWidth(30)
.Titled("Verzenden")
.RenderValueAs(n => Html.CheckBox("Verzonden", !n.Verzonden));
columns.Add(n => n.StartDatum).Titled("Start datum").Sortable(true).SetWidth(100);
columns.Add(n => n.EindDatum).Titled("Eind datum").Sortable(true).SetWidth(100);
columns.Add(n => n.Impact).Titled("Impact").Sortable(true).SetWidth(100);
columns.Add(n => n.NotificatieType.Type).Titled("Type").Sortable(true).SetWidth(100);
columns.Add(n => n.Omschrijving).Titled("Omschrijving").Sortable(true).SetWidth(100);
columns.Add(n => n.Diensten).Titled("Diensten").Sortable(true).SetWidth(100);
columns.Add(n => n.ID).Titled("ID").Sortable(true).SetWidth(100);
}).Filterable().SetLanguage("nl")
我很抱歉荷兰变量,但我认为你得到了主旨(如果没有知道,我会把他们改成英语)
现在,当此列表中的选择发生更改时,将调用onRowSelect方法:
$(function ()
{
pageGrids.grid.onRowSelect(function (e)
{
var startDateArr = e.row.StartDatum.toString().split(' ');
var startDate = startDateArr[0];
document.getElementById('startDatum').value = startDate;
}
}
e.row.startDatum
包含以下内容:“25-7-2014 13:00:00”
所以在分割后startDate
=“25-7-2014”
document.getElementByID('startDatum')
指的是:
<input type="date" id="startDatum" />
这里的问题是-7-
,因为它不是有效的日期时间(或者至少不是我的输入所接受的。
输入需要2个数字的月份(或日期)所以它必须是“25-07-2014” 现在我知道一种解决这个问题的肮脏方法:
var dateArr = startDate.split('-');
var validDate = "";
for (i = 0; i < 3; i++)
{
if(dateArr[i].length < 2)
{
validDate += "0" + dateArr[i] + '-';
}
else if (dateArr[i].length == 2)
{
validDate += dateArr[i] + '-';
}
else if (dateArr[i].length == 4) // for the year and the end of the date string.
{
validDate += dateArr[i];
}
}
document.getElementById('startDatum').value = validDate;
但这很脏,我想要一个干净有效的方法来做这个,有什么建议吗?
修改
我认为上面的代码可以工作(所以我没有真正测试它)但它仍然没有设置我的日期时间值(或者至少日期时间框仍然显示dd-mm-jjjj)
document.getElementById('startDatum').value = validDate
是正确的做法吗?
编辑工作但不干净
目前有这样的工作方式:但是,仍然会有更好,更清洁的方式。
var startDateArr = e.row.StartDatum.toString().split(' ');
var startDate = startDateArr[0];
startDate = startDate.replace(/(\b\d\b)/g, "0$1");
var dateArr = startDate.split('-');
var validDate = dateArr[2] + "-" + dateArr[1] + "-" + dateArr[0];
$('#startDatum').val(validDate);
答案 0 :(得分:1)
我建议使用正则表达式。
试试这个
startDate = startDate.replace(/(\b\d\b)/g, "0$1");