diff --git a/README.md b/README.md
index da0cfe3..e8cab5b 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Air Datepicker
-Lightweight customizable cross-browser jQuery datepicker, built with es5 and css-flexbox. Works in all modern browsers.
+Lightweight customizable cross-browser jQuery datepicker, built with es5 and css-flexbox. Works in all modern desktop and mobile browsers (tested no Android 4.4+ and iOS8+)

## Install
@@ -19,6 +19,10 @@ $('.my-datepicker').datepicker([options])
## Change log
+### v1.2.3
+* fixed `dateFormat` method.
+* fixed typo in Russian docs, add ids in docs headers.
+
### v1.2.2
* fixed typo in `monthsField`
* added German language (thanks to [Ichag](https://github.com/Ichag))
diff --git a/src/js/datepicker.js b/src/js/datepicker.js
index e82b93e..3e3a5c4 100644
--- a/src/js/datepicker.js
+++ b/src/js/datepicker.js
@@ -317,6 +317,7 @@ var Datepicker;
formatDate: function (string, date) {
date = date || this.date;
var result = string,
+ boundary = this._getWordBoundaryRegExp,
locale = this.loc,
decade = datepicker.getDecade(date),
d = datepicker.getParsedDate(date);
@@ -325,21 +326,21 @@ var Datepicker;
case /@/.test(result):
result = result.replace(/@/, date.getTime());
case /dd/.test(result):
- result = result.replace(/\bdd\b/, d.fullDate);
+ result = result.replace(boundary('dd'), d.fullDate);
case /d/.test(result):
- result = result.replace(/\bd\b/, d.date);
+ result = result.replace(boundary('d'), d.date);
case /DD/.test(result):
- result = result.replace(/\bDD\b/, locale.days[d.day]);
+ result = result.replace(boundary('DD'), locale.days[d.day]);
case /D/.test(result):
- result = result.replace(/\bD\b/, locale.daysShort[d.day]);
+ result = result.replace(boundary('D'), locale.daysShort[d.day]);
case /mm/.test(result):
- result = result.replace(/\bmm\b/, d.fullMonth);
+ result = result.replace(boundary('mm'), d.fullMonth);
case /m/.test(result):
- result = result.replace(/\bm\b/, d.month + 1);
+ result = result.replace(boundary('m'), d.month + 1);
case /MM/.test(result):
- result = result.replace(/\bMM\b/, this.loc.months[d.month]);
+ result = result.replace(boundary('MM'), this.loc.months[d.month]);
case /M/.test(result):
- result = result.replace(/\bM\b/, locale.monthsShort[d.month]);
+ result = result.replace(boundary('M'), locale.monthsShort[d.month]);
case /ii/.test(result):
result = result.replace(/\bii\b/, d.fullMinutes);
case /i/.test(result):
@@ -349,18 +350,22 @@ var Datepicker;
case /h/.test(result):
result = result.replace(/\bh\b/, d.hours);
case /yyyy/.test(result):
- result = result.replace(/\byyyy\b/, d.year);
+ result = result.replace(boundary('yyyy'), d.year);
case /yyyy1/.test(result):
- result = result.replace(/\byyyy1\b/, decade[0]);
+ result = result.replace(boundary('yyyy1'), decade[0]);
case /yyyy2/.test(result):
- result = result.replace(/\byyyy2\b/, decade[1]);
+ result = result.replace(boundary('yyyy2'), decade[1]);
case /yy/.test(result):
- result = result.replace(/\byy\b/, d.year.toString().slice(-2));
+ result = result.replace(boundary('yy'), d.year.toString().slice(-2));
}
return result;
},
+ _getWordBoundaryRegExp: function (sign) {
+ return new RegExp('\\b(?=[a-zA-Z0-9äöüßÄÖÜ<])' + sign + '(?![>a-zA-Z0-9äöüßÄÖÜ])');
+ },
+
selectDate: function (date) {
var _this = this,
opts = _this.opts,
diff --git a/tests/index.html b/tests/index.html
index 390882e..d788759 100644
--- a/tests/index.html
+++ b/tests/index.html
@@ -8,6 +8,7 @@
+
diff --git a/tests/specs/options.js b/tests/specs/options.js
index 619a4b4..c35fd1b 100644
--- a/tests/specs/options.js
+++ b/tests/specs/options.js
@@ -136,7 +136,6 @@ describe('Options', function () {
'yy': 15,
'yyyy1': 2010,
'yyyy2': 2019
-
};
for (var format in formats) {
@@ -151,6 +150,15 @@ describe('Options', function () {
})
}(format))
}
+
+ it('should work with special characters', function () {
+ dp = $input.datepicker({
+ language: 'de',
+ dateFormat: 'Month is MM'
+ }).data('datepicker');
+ dp.selectDate(new Date(2016, 2, 1));
+ expect(dp.$el.val()).to.be.equal('Month is März');
+ })
});
describe('altField', function () {