作为我在 JQGrid 中的 colModel 的一部分,我有以下内容:
{name:'revisedDate', width:220, editable: true, datefmt:'yyyy/mm/dd',edittype:'text',editrules:{date:true, required:true},search:true, stype:'text'}
datefmt 和 date:true 似乎按预期工作,除了一种特殊情况。当前在编辑框中,如果用户输入“2012/04/”,jqgrid 会接受它作为有效的日期值,即使它缺少月份中的日期。所有其他不正确的变体都会在表单顶部显示一条错误消息,其中包含以下文本:请输入有效日期值 - yyyy-mm-dd。
我也尝试过更改 colModel 以使用datefmt:'yyyy-mm-dd
但没有成功。
有什么我做错了吗?我的下一步是推出自定义格式化程序,但这似乎是不必要的。
JQGrid 版本:4.3.1
解决方案:我最终在 beforeSubmit 事件中针对字符串测试了一个正则表达式,并保留了editrules{date:true}
原位。大部分日期验证是由内置的 datefmt 完成的,因此下面的正则表达式实际上只是该错误的创可贴。一个更理想的解决方案是在同一个地方进行所有日期验证,但是这种形式的使用不值得投入额外的时间。
var datePattern = new RegExp(/[0-9]{4}\/[0-9]{2}\/[0-9]{2}/g);
var revised = $("#revisedDate").val();
if(!datePattern.test(revised))
{
return[false, "Revised Date (YYYY/MM/DD/): Please enter valid date value - YYYY/MM/MM"];
}
return [true, "Success"];