日期:2014-05-16  浏览次数:20331 次

文本框自动转换日期格式
在输入框中如果输入中文格式的时间,如“二〇一二年九月二十三日”,自动转换成“2012-09-23”格式,如果输入其他的文字,则不管,希望各位帮帮忙

------解决方案--------------------
window.onload=function(){
var orgStr='一二三四五六七八九O年月日';
alert(dateExchange(orgStr))
}
String.prototype.Trim = function() 

return this.replace(/(^\s*)|(\s*$)/g, ""); 

function dateExchange(str1){
if(str1.Trim==""){
console.log('转换不能为空');
return false;
}

var orgArr=str1.split('');
var newArr=[];
for(var i=0;i<orgArr.length;i++){
if(mydateForm[orgArr[i]]){
newArr.push(mydateForm[orgArr[i]]);
}else{
alert('false');
break;
}
}
var str2=newArr.join("");
return str2;

}
var mydateForm={
'一':'1',
'二':'2',
'三':'3',
'四':'4',
'五':'5',
'六':'6',
'七':'7',
'八':'8',
'九':'9',
'O':'0',
'年':'Y',
'月':'M',
'日':'D',
};
我也简单的写了一下,没有用到正则,正则不太会
------解决方案--------------------
HTML code


<html> 
<script> 
function parseDate() 
{ 
    var rqObj = document.getElementById("rq"); 
    var rqValue = rqObj.value; 
    if(rqValue=="") return; 
    var reg = /([〇一二三四五六七八九十]{4})年([〇一二三四五六七八九十]{1,3})月([〇一二三四五六七八九十]{1,3})日/g;

    
rqObj.value = rqValue.replace(reg, function (date, year, month,day) 
        {    
        
        var rs=[];
        if(year && year.length==4) {
            rs.push(parse(year));
            }
            if(month && month.length>0) {
                if(month.length==3){month = month.substring(0,2);}
                rs.push(parse(month));
            }
            if(day && day.length>0) {
                if(day.length==3){day = day.substring(0,2);}
                rs.push(parse(day));
            }
            return rs.join('-');
            }
     );
} 
function parse(s)
{
    var obj={'〇':0,'一':1,'二':2,'三':3,'四':4,'五':5,'六':6,'七':7,'八':8,'九':9,'十':1};
    var rs=[];
    for(var i=0;i<s.length;i++){
        rs.push(obj[s.charAt(i)]);
    }
    return rs.join('');
}

</script> 
<body> 
<input type="text" name="rq" id="rq" value=""  onchange="parseDate();"/> 
 </html>

------解决方案--------------------
试一把。。。

JScript code

    document.getElementById('t').onblur = function() {
        var reg = /^([一二三四五六七八九][〇一二三四五六七八九]+)年([一二三四五六七八九]|十[一二]{0,1})月([一二三四五六七八九]|(十|二十)[一二三四五六七八九]{0,1}|三十(|一))日$/;
        var value = this.value.replace(/^\s+|\s+$/g, '');
        var matches = value.match(reg);
        var date = [];
        var temp;
        if(matches) {
            for(var i = 1; i <= 3; i++) {
                temp = trans(matches[i]);
                if(temp) {
                    date.push(temp);
                }
            }
            if(date.length == 3) {
                this.value = date.join('-');
            }
        }
        
    }
    
    function trans(str) {
        var map = '〇一二三四五六七八九十';
        return     str.length == 0? '' : 
                str.length == 1? '0' + map.indexOf(str) : 
                str.length == 2? (/^十/.test(str)? '1' + map.indexOf(str.substr(1)) : map.indexOf(str.substr(0,1)) + '0') : 
                str.length == 3? map.indexOf(str.substr(0,1)).toString() + map.indexOf(str.substr(2,1)).toString() :
                str.replace((new RegExp('\[' + map + ']', 'g')), function(a) {return map.indexOf(a)}); 
    }