我必须以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;,这里我面临的问题是当我键入两个字母并且退格不起作用时,将出现正斜杠。所以任何人都请帮助我。
任何帮助都将不胜感激。
答案 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
格式的混合可以解决此问题:
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;