如何在javascript中为输入字段编写mm / dd / yyyy日期格式?

时间:2017-05-15 07:09:45

标签: javascript angularjs date

我必须以javascript或angular格式在输入文本框中格式化日期,我在代码中遇到问题。

HTML:

<input  type="text" class="form-control" name="dateOfBirth" ng-model="dob" placeholder="Birthday(MM/DD/YYYY)" ng-required="true" ng-change="change()" maxlength="10" ng-maxlength="10" dob-format>

JS:

 vm.change = function (e) {
    if (vm.dob) {
        var dobLen = vm.dob.length;
        if (dobLen === 2 || dobLen === 5)
            vm.dob = vm.dob + "/";
    }
};

如果我输入&#34; 6&#34;(月)而不是&#34; 06&#34;,它必须自动更改为&#34; 06&#34;,这里我面临的问题是当我键入两个字母并且退格不起作用时,将出现正斜杠。所以任何人都请帮助我。

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:1)

在更改事件中相应更改。

Regex_replace('0' + Replace([Starting Date], '/', '/0'), '0*(\d\d)/0*(\d\d)/0*(\d\d)', '20$3-$1-$2')

答案 1 :(得分:0)

public static getDateForm_german(date: Date): string {
    let filter = {
        year: 'numeric',
        month: '2-digit',
        day: '2-digit'
    };
    return date.toLocaleString('de-DE', filter);  
    // returns like 30.02.1999 for 1999-02-30
}

我知道这不是你要找的格式,而是打字稿。但我认为你正在寻找这样的东西。

答案 2 :(得分:0)

尝试如下:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script>
var app = angular.module('myApp', []);
          app.controller('appCtrl', ['$scope', function($scope){
              vm=$scope;
               vm.change = function (e) {
    if (vm.dob) {
        var dobLen = vm.dob.length;
        if (dobLen === 2 || dobLen === 5)
            vm.dob = vm.dob + "/";
    }
};
          }]);
</script>

<强> HTML:

<div ng-app="myApp" ng-controller="appCtrl">
        <input  type="text" class="form-control" name="dateOfBirth" ng-model="dob" placeholder="Birthday(MM/DD/YYYY)" ng-required="true" ng-change="change()" maxlength="10" ng-maxlength="10" dob-format>
     </div> 

这对我来说就像魅力一样。

答案 3 :(得分:0)

pattern属性和某些onchange格式的混合可以解决此问题:

&#13;
&#13;
var inp = document.body.appendChild(document.createElement("input"));
inp.pattern = "\\d\\d/\\d\\d/\\d\\d";
inp.placeholder = "YY/MM/DD";
inp.required = true;

function formatDate(evt) {
  var val = inp
    .value
    .toString().split("/")
    .map(function(a) {
      if (a.length == 1) {
        return "0" + a;
      }
      return a;
    })
    .join("/");
  if (/\d\d\/\d\d\/\d\d/.test(val)) {
    inp.value = val;
  }
}
inp.onchange = formatDate;
&#13;
&#13;
&#13;