Javascript ExtJs转换某些有效的
我知道我以前也问过类似的问题。然而,这略有不同。ExtJs 2.1仍在将某些无效日期(如Javascript ExtJs转换某些有效的,javascript,date,extjs,extjs2,Javascript,Date,Extjs,Extjs2,我知道我以前也问过类似的问题。然而,这略有不同。ExtJs 2.1仍在将某些无效日期(如01/00/2012转换为01/01/2012)转换为1/01/2012我可以创建下面的代码来防止这种情况发生,但这会产生“脚本错误”。谁能帮我找到一个不会产生脚本错误的解决方案?以下是创建字段的代码: var d = new Ext.form.DateField({ el: el.dom, id: id, format:
01/00/2012
转换为01/01/2012
)转换为1/01/2012
我可以创建下面的代码来防止这种情况发生,但这会产生“脚本错误”。谁能帮我找到一个不会产生脚本错误的解决方案?以下是创建字段的代码:
var d = new Ext.form.DateField({
el: el.dom,
id: id,
format: 'm/d/Y',
hideTrigger: false,
allowBlank: true,
disabled: isDisabled,
validator: extraDateValidator,
altFormats: 'm/d/Y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|mdy|mdY|d|Y-m-d',
validateOnBlur: true,
//validationEvent: false, //string or boolean
invalidText: 'Enter date as MM/DD/YYYY',
menuListeners: Ext.applyIf({
select: function (m, d) {
Ext.form.DateField.prototype.menuListeners.select.apply(this, arguments);
this.focus.defer(100, this);
onDateSelect(m, d, this);
}
})
});
这是我的验证器:
function extraDateValidator(date) {
var dateArray = date.split("/");
if (tempForParseDate) {
Date.parseDate = tempForParseDate
}
if (dateArray.length == 3 && (dateArray[0] > 12 || dateArray[0]<1 || dateArray[1]<1) ) {
tempForParseDate = Date.parseDate
Date.parseDate = "";
return false;
}
return true;
tempForParseDate = Date.parseDate
Date.parseDate = "";
堆栈跟踪:
initComponent(D="01/00/2012")ext-all.js (line 128)
initComponent()ext-all.js (line 128)
onResize()ext-all.js (line 125)
onResize(A=[Trial] Ext.EventObject {})ext-all.js (line 125)
EventManager(b=[Trial] Ext.EventObject {})ext-all.js (line 13)
getViewWidth(R=keydown charCode=0, keyCode=9)ext-base.js (line 10)
如果您确实想重新写入
Date.parseDate
,并且不获取JS错误,那么将其设置为无操作函数,而不是字符串
Date.parseDate = function(){};
或者更好的方法是,在调用重新编写的parseDate函数时记录日志,这样您至少可以知道代码是否做了正确的事情
Date.parseDate = function(){
console.log("Called parseDate with args ", arguments);
};
确切的“脚本错误”是什么?你有JavaScript控制台/调试器中的堆栈跟踪可以添加到你的问题中吗?@JoeHolloway添加了堆栈跟踪和错误,并澄清了我是如何创建它的。好了,这部分现在已经清楚了,我误解了。