js中dijit.form.DateTextBox日期自动转化方法详解

调查了一下,可以用下面的代码来解决。

如下代码:

 代码如下 复制代码

dojo.declare("net.yutuo.dojo.DateTextBox", [dijit.form.DateTextBox], {   
    validator: function(value, constraints) {
        value = this.myParse(value, constraints);
        return (new RegExp("^(?:" + this.regExpGen(constraints) + ")"+(this.required?"":"?")+"$")).test(value)
                && (!this.required || !this._isEmpty(value))
                && (this._isEmpty(value) || this.parse(value, constraints) !== undefined);
    },
    parse: function(value, constraints){
        value = this.myParse(value, constraints);
        return this.dateLocaleModule.parse(value, constraints)
                || (this._isEmpty(value) ? null : undefined);
    },
    myParse: function (value, constraints) {
        var dateStr = null;
        if (value.match(/^d{6}$/)) {
            dateStr = value.substring(0, 2) + '-' + value.substring(2, 4) + '-' + value.substring(4, 6);
        } else if (value.match(/^d{8}$/)) {
            dateStr = value.substring(0, 4) + '-' + value.substring(4, 6) + '-' + value.substring(6, 8);
        } else if (value.match(/^d{4}$/)) {
            dateStr = new Date().getFullYear() + '-' + value.substring(0, 2) + '-' + value.substring(2, 4);
        }
        if (dateStr) {
            var date = this.dateLocaleModule.parse(dateStr, {selector: 'date', datePattern: 'yy-M-d'});
            if (date) {
                return this.dateLocaleModule.format(date, constraints);
            }
        }
        return value;
    }
});

测试代码如下

 代码如下 复制代码

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" djConfig="parseOnLoad: true"
   src="js/dojo/dojo.js"></script>
<link rel="stylesheet" type="text/css"
   href="js/dojo/resources/dojo.css" />
<link rel="stylesheet" type="text/css"
   href="js/dijit/themes/claro/claro.css" />

<title>Dojo Test</title>

<script type="text/javascript">
    dojo.require("dijit.form.DateTextBox");
   
    dojo.declare("net.yutuo.dojo.DateTextBox", [dijit.form.DateTextBox], {   
        validator: function(value, constraints) {
            value = this.myParse(value, constraints);
            return (new RegExp("^(?:" + this.regExpGen(constraints) + ")"+(this.required?"":"?")+"$")).test(value)
                    && (!this.required || !this._isEmpty(value))
                   && (this._isEmpty(value) || this.parse(value, constraints) !== undefined);
        },
        parse: function(value, constraints){
            value = this.myParse(value, constraints);
            return this.dateLocaleModule.parse(value, constraints)
                    || (this._isEmpty(value) ? null : undefined);
        },
        myParse: function (value, constraints) {
            var dateStr = null;
            if (value.match(/^d{6}$/)) {
                dateStr = value.substring(0, 2) + '-' + value.substring(2, 4) + '-' + value.substring(4, 6);
            } else if (value.match(/^d{8}$/)) {
                dateStr = value.substring(0, 4) + '-' + value.substring(4, 6) + '-' + value.substring(6, 8);
            } else if (value.match(/^d{4}$/)) {
                dateStr = new Date().getFullYear() + '-' + value.substring(0, 2) + '-' + value.substring(2, 4);
            }
            if (dateStr) {
                var date = this.dateLocaleModule.parse(dateStr, {selector: 'date', datePattern: 'yy-M-d'});
                if (date) {
                    return this.dateLocaleModule.format(date, constraints);
                }
            }
            return value;
        }
    });

</script>
</head>

<body class="claro">
    Old:<br/>
    <input type="text" data-dojo-type="dijit.form.DateTextBox"/>

    <br/>   
    New:    <br/>
    <input type="text" data-dojo-type="net.yutuo.dojo.DateTextBox"/>
</body>

</html>

时间: 2024-09-22 11:34:42

js中dijit.form.DateTextBox日期自动转化方法详解的相关文章

Android中gson、jsonobject解析JSON的方法详解_Android

JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. JSON对象: JSON中对象(Object)以"{"开始, 以"}"结束. 对象中的每一个item都是一个key-value对, 表现为"key:value"的形式, ke

Android中gson、jsonobject解析JSON的方法详解

JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. JSON对象: JSON中对象(Object)以"{"开始, 以"}"结束. 对象中的每一个item都是一个key-value对, 表现为"key:value"的形式, ke

在js里怎么实现Xcode里的callFuncN方法(详解)_javascript技巧

本人使用的WebStorm编辑器,里面没有callFuncN, 不记得Lua是否支持callFuncN,如果不支持相信应该能用同样的方法做到. 废话不多说,贴代码: loadDown : function () { var dis = this.left_move.getPositionY() - this.left.getPositionY(); // 得到一个距离 var act1 = new cc.moveBy(0.5,cc.p(0,-dis)); var act2 = cc.callFu

jQuery中Ajax的get、post等方法详解

 前面我们讲述了jQuery中ajax的load()方法,小伙伴们反应非常好,今天我们就来讲解下jQuery中Ajax的get.post等方法,希望大家同样能够喜欢.     load()方法通常用来从Web服务器上获取静态的数据文件,然而这并不能体现ajax的全部价值. 在项目中,如果需要传递一些参数给服务器中的页面,那么可以使用$.get()或者$.post()方法(或者是$.ajax()方法) $.get()方法使用GET方式来进行异步请求.结构为:$.get(url [, data] [

使用DateTime的ParseExact方法实现特殊日期时间的方法详解(转)

本篇文章是对使用DateTime的ParseExact方法实现特殊日期时间的方法进行了详细的分析介绍,需要的朋友参考下 今天遇到一个特别的需求,需要从下面的字符串中转换成一个DateTime对象: [07-13 15:50:42] 主要问题是这个时间不是标准的时间,而是自定义的格式,即开头是月-日,然后是时间. 使用最常用的DateTime.Parse(string dateTimeStr)无法转换,问题就在于这个自定义格式上. 搜索了之后,我找到了下面的方法: public static Da

JS实现焦点图轮播效果的方法详解_javascript技巧

本文实例讲述了JS实现焦点图轮播效果的方法.分享给大家供大家参考,具体如下: 效果图如下: 一.所用到的知识点 1.DOM操作 2.定时器 3.事件运用 4.Js动画 5.函数递归 6.无限滚动大法 二.结构和样式 <div id="banner" class="banner"> <ul id="list-banner" class="list-banner fn-clear" style="lef

js/jquery解析json和数组格式的方法详解

 本篇文章主要是对js/jquery解析json和数组格式的方法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 在解析之前,我们必须弄清楚几个概念:数组,关联数组以及json之间有哪些区别和联系点?   一.概念介绍 1.数组   语法:  ECMAScript v3规定了数组直接量的语法,JavaScript 1.2和JScript 3.0实现了它.可以把-个用逗号分隔的表达式列表放在方括号中,创建并初始化-个数组.这些表达式的值将成为数组元素.例如:   var a = [1

thinkPHP中钩子的两种配置调用方法详解_php实例

本文实例讲述了thinkPHP中钩子的两种配置调用方法.分享给大家供大家参考,具体如下: thinkphp的钩子行为类是一个比较难以理解的问题,网上有很多写thinkphp钩子类的文章,我也是根据网上的文章来设置thinkphp的钩子行为的,但根据这些网上的文章,我在设置的过程中,尝试了十几次都没有成功,不过,我还是没有放弃,最后还是在一边调节细节,一边试验的过程中实现了钩子行为的设置.下面是我个人的设置经验,在这里跟大家分享一下. 个人做了两种设置,都试验成功了,一个简单点,在thinkphp

js/jquery解析json和数组格式的方法详解_javascript技巧

在解析之前,我们必须弄清楚几个概念:数组,关联数组以及json之间有哪些区别和联系点? 一.概念介绍1.数组 语法: ECMAScript v3规定了数组直接量的语法,JavaScript 1.2和JScript 3.0实现了它.可以把-个用逗号分隔的表达式列表放在方括号中,创建并初始化-个数组.这些表达式的值将成为数组元素.例如: var a = [1, true, 'abc']; 具体操作查看API. ps:必须方括号隔开. 2.关联数组 1.语法:var myhash= {"key1″:&