javascript - 剑道 jQuery 电子表格日期值保存
问题描述
所以我有一个绑定到远程数据源的 Kendo jQuery 电子表格。电子表格中的字段也是数据驱动的,所以我有一个流程,它将遍历所有列并根据数据类型对列应用验证。当我将验证应用于日期值时,似乎所有值都转换为 JavaScript Date 对象。
这给我带来了两个问题。1. 当我去保存数据时,它会将日期对象发送到服务器,而不是mm/dd/yyyy
. 2. 它将空白值视为12/30/1899
。
这是我使用的部分代码:
var record_id = 1;
var columnData = {
field_name1: {"title":"FIELD1", "type":"string", "width":50, "order":0},
field_name2: {"title":"FIELD2", "type":"date", "width":50, "order":1}
};
var columnMap = ['field_name1', 'field_name2'];
// The following code executes in the event that is triggered when the data is successfully read.
function readSource(e) {
$.ajax({
url: './spreadsheet.php',
data: { id: record_id, action: 'list' },
dataType: 'json',
method: 'POST',
success: function(result) {
e.success(result);
$.each(columnData, function(field, data) {
var range = toColumnName(columnMap.indexOf(field) + 1) + '2:' + toColumnName(columnMap.indexOf(field) + 1) + (result.count + 1);
var validator = false;
var format = '';
switch (data.type) {
case 'date': {
validator = {
dataType: 'date',
comparerType: 'between',
from: 'DATEVALUE("1/1/2000")',
to: 'DATEVALUE("1/1/2100")',
allowNulls: true,
showButton: true,
type: 'reject',
titleTemplate: 'Date Error',
messageTemplate: 'Enter a valid date between 1/1/2000 and 1/1/2100.'
};
format = 'mm/dd/yyyy';
break;
}
}
if (validator !== false) {
sheet.range(range).validation(validator);
}
if (format === '') {
sheet.range(range).format(format);
}
});
}
});
}
// On save
function submitSource(e) {
$.ajax({
url: './spreadsheet.php',
data: { action: 'update', id: record_id, records: e.data },
method: 'POST',
dataType: 'json',
success: function (result) {
e.success(result.Updated, 'update');
e.success(result.Created, 'create');
e.success(result.Destroyed, 'destroy');
}
}
// Convert index to column letter (1 => 'A', 27=>'AA')
function toColumnName(num) {
for (var ret = '', a = 1, b = 26; (num -= a) >= 0; a = b, b *= 26) {
ret = String.fromCharCode(parseInt((num % b) / a) + 65) + ret;
}
return ret;
}
我将包含一个指向屏幕截图的链接,该屏幕截图显示当我单击保存按钮时应该为空白的单元格会发生什么情况。图像中的第一行包含已填充的日期。下面的行是空白的。
需要更改哪些内容才能将适当的日期值发送回服务器,如何避免出现空白问题?
解决方案
电子表格.php 代码可能没有正确格式化日期。
1899 年 12 月 30 日是 Microsoft Excel 和其他软件的纪元日期: https ://en.wikipedia.org/wiki/Epoch_(reference_date)#Notable_epoch_dates_in_computing
因此,您可能正在输入值“1”而不是 null。
推荐阅读
- reactjs - 当 firebase 配置发生变化时更新 firebase 消息传递服务工作者
- javascript - React 错误边界没有捕获错误
- java - Spring Cloud Stream Kafka:如何在使用 @Transactional 注释的方法中延迟发送消息
- wordpress - 在 WPML 中添加 hreflang 而不创建额外的语言
- javascript -
检查textarea 中是否有中断标签 ( ) - php - 警告:include(includes/db.php):无法打开流:第 1 行的 C:\xampp\htdocs\cms\includes\navigation.php 中没有这样的文件或目录
- permissions - 尽管已授予所有管理员权限,但“需要管理员批准”
- scheme - 在球拍练习中循环
- python - 提高求解线性方程的速度
- soapui - 用soapui中的输入流响应