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

解决方案 »

  1.   

    简单写了一下,还有些细节自己处理下吧。<html>
      <script>
      function changeRq()
      {
      var rqObj = document.getElementById("rq");
      var rqValue = rqObj.value;
      if(rqValue=="") return;
      var reg = /(.*)([〇一二三四五六七八九十]{4}年[〇一二三四五六七八九十]{1,3}月[〇一二三四五六七八九十]{1,3}日)(.*)/g;
      var x = [['〇','0'],['一','1'],['二','2'],['三','3'],['四','4'],['五','5'],['六','6'],['七','7'],['八','8'],['九','9'],['十','']];
      if(reg.test(rqValue)){
      var a = RegExp.$2;
      var f = RegExp.$1;
      var b = RegExp.$3;
      for(var i=0;i<x.length;i++){
      a = a.replace(new RegExp(x[i][0],"g"),x[i][1]);
      }
      rqObj.value=f+a+b;
      }
      }
      </script>
      <body>
      <input type="text" name="rq" id="rq"/> <input type="button" onclick="changeRq();" value="转换"/>
      </body>
     </html>
      

  2.   

    我要好好学习 regexp 了 一点看不懂。。
      

  3.   

    我现在需要写好几个这样的,怎么写最方便,简洁,赋个同样的name还是弄个动态的id?
      

  4.   

    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',
    };
    我也简单的写了一下,没有用到正则,正则不太会
      

  5.   

    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',
    };
    我也简单的写了一下,没有用到正则,正则不太会
      

  6.   

    <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> 
      

  7.   

    试一把
    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)}); 
    }
      

  8.   

    里面不知道是写错了,还是我自己的问题,没成功,把第15行的this.value改成str就成功了,感谢