2015-10-13 107 views
0

我有一个日期选择器,我想在用户输入为ddmmyyyy时将日期解析为dd/mm/yyyy。JavaScript格式日期从DDMMYYYY到DD/MM/YYYY

Image

我有添加Javascript功能来输入文字,但我不知道如果我在正确的道路

<inputText id="input1" onchange="parseDate()"/> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#input1").datepicker() 
    }; 
    function parseDate() { 
     ??? 
    } 
<script> 

感谢

回答

0

如果这就是你要找的具体格式,那么你可以只是解析出来:

http://jsfiddle.net/q3yrtu0z/

$('#input1').change(function() { 
    $(this).val($(this).val().replace(/^(\d{2})(\d{2})(\d{4})$/, '$1/$2/$3')); 
}); 

这样的设计是这样的,当值正好是8位数字,然后它将格式化为XX/XX/XXXX。

您可能需要做的日期格式的有效性(虽然你不得不为MM/DD/YYYY输入做到这一点,以及反正)

0

当你要为一个简单的转换,考虑slice你的字符串到你想要添加你的字符的点,例如

var strA = '13102015', 
    strB = strA.slice(0, 2) + '/' + strA.slice(2, 4) + '/' + strA.slice(4); 
strB; // "13/10/2015" 

如果稍后用户修改它,可能需要多次调用此选项,您也可能希望在开始时使用replace(例如,

'13/102015'.replace(/[^\d]/g, ''); // "13102015" 
// now continue to slice 

正则表达式

  • [chars]装置匹配这些字符(在这种情况下chars
  • [^chars][chars]倒数,即匹配除这些字符以外的任何字符
  • \d是任何数字,即数字09
  • g标志意味着g叶形,即赛后不停地寻找另一场比赛
0

试试这个额外的验证....

function convertDate(inputFormat) {function pad(s) { return (s < 10) ? '0' + s : s; } var d = new Date(inputFormat); return [pad(d.getDate()), pad(d.getMonth()+1), d.getFullYear()].join('/'); }