Merge pull request #426 from vzverev78/master

Improvements for validation
This commit is contained in:
Valeriy 2016-04-06 19:23:24 +05:00
commit b6f3be4ca1
5 changed files with 38 additions and 33 deletions

View File

@ -575,7 +575,7 @@ var DateFormatter;
} }
}; };
})();/** })();/**
* @preserve jQuery DateTimePicker plugin v2.5.1 * @preserve jQuery DateTimePicker plugin v2.5.3
* @homepage http://xdsoft.net/jqplugins/datetimepicker/ * @homepage http://xdsoft.net/jqplugins/datetimepicker/
* @author Chupurnov Valeriy (<chupurnov@gmail.com>) * @author Chupurnov Valeriy (<chupurnov@gmail.com>)
*/ */
@ -1755,21 +1755,23 @@ var DateFormatter;
if (options.allowBlank && (!$.trim($(this).val()).length || (typeof options.mask == "string" && $.trim($(this).val()) === options.mask.replace(/[0-9]/g, '_')))) { if (options.allowBlank && (!$.trim($(this).val()).length || (typeof options.mask == "string" && $.trim($(this).val()) === options.mask.replace(/[0-9]/g, '_')))) {
$(this).val(null); $(this).val(null);
datetimepicker.data('xdsoft_datetime').empty(); datetimepicker.data('xdsoft_datetime').empty();
} else if (!dateHelper.parseDate($(this).val(), options.format)) {
var splittedHours = +([$(this).val()[0], $(this).val()[1]].join('')),
splittedMinutes = +([$(this).val()[2], $(this).val()[3]].join(''));
// parse the numbers as 0312 => 03:12
if (!options.datepicker && options.timepicker && splittedHours >= 0 && splittedHours < 24 && splittedMinutes >= 0 && splittedMinutes < 60) {
$(this).val([splittedHours, splittedMinutes].map(function (item) {
return item > 9 ? item : '0' + item;
}).join(':'));
} else {
$(this).val(dateHelper.formatDate(_xdsoft_datetime.now(), options.format));
}
datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());
} else { } else {
var d = dateHelper.parseDate($(this).val(), options.format);
if (d) { // parseDate() may skip some invalid parts like date or time, so make it clear for user: show parsed date/time
$(this).val(dateHelper.formatDate(d, options.format));
} else {
var splittedHours = +([$(this).val()[0], $(this).val()[1]].join('')),
splittedMinutes = +([$(this).val()[2], $(this).val()[3]].join(''));
// parse the numbers as 0312 => 03:12
if (!options.datepicker && options.timepicker && splittedHours >= 0 && splittedHours < 24 && splittedMinutes >= 0 && splittedMinutes < 60) {
$(this).val([splittedHours, splittedMinutes].map(function (item) {
return item > 9 ? item : '0' + item;
}).join(':'));
} else {
$(this).val(dateHelper.formatDate(_xdsoft_datetime.now(), options.format));
}
}
datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val()); datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -366,7 +366,8 @@ jQuery('#_datetimepicker_weekends_disable').datetimepicker({
<p>By default, datetimepicker uses <a href="https://github.com/kartik-v/php-date-formatter">php-date-formatter</a> for parsing and formatting the date and time displayed. You can replace the library by setting a custom DateFormatter. Simply supply an object that implements the <tt>parseDate</tt> and <tt>formatDate</tt> methods. This example uses the popular <a href="http://momentjs.com/">MomentJS</a> library:</p> <p>By default, datetimepicker uses <a href="https://github.com/kartik-v/php-date-formatter">php-date-formatter</a> for parsing and formatting the date and time displayed. You can replace the library by setting a custom DateFormatter. Simply supply an object that implements the <tt>parseDate</tt> and <tt>formatDate</tt> methods. This example uses the popular <a href="http://momentjs.com/">MomentJS</a> library:</p>
<pre><code data-language="javascript">$.datetimepicker.setDateFormatter({ <pre><code data-language="javascript">$.datetimepicker.setDateFormatter({
parseDate: function (date, format) { parseDate: function (date, format) {
return moment(date, format); var d = moment(date, format);
return d.isValid() ? d : false;
}, },
formatDate: function (date, format) { formatDate: function (date, format) {

View File

@ -1179,21 +1179,23 @@
if (options.allowBlank && (!$.trim($(this).val()).length || (typeof options.mask == "string" && $.trim($(this).val()) === options.mask.replace(/[0-9]/g, '_')))) { if (options.allowBlank && (!$.trim($(this).val()).length || (typeof options.mask == "string" && $.trim($(this).val()) === options.mask.replace(/[0-9]/g, '_')))) {
$(this).val(null); $(this).val(null);
datetimepicker.data('xdsoft_datetime').empty(); datetimepicker.data('xdsoft_datetime').empty();
} else if (!dateHelper.parseDate($(this).val(), options.format)) {
var splittedHours = +([$(this).val()[0], $(this).val()[1]].join('')),
splittedMinutes = +([$(this).val()[2], $(this).val()[3]].join(''));
// parse the numbers as 0312 => 03:12
if (!options.datepicker && options.timepicker && splittedHours >= 0 && splittedHours < 24 && splittedMinutes >= 0 && splittedMinutes < 60) {
$(this).val([splittedHours, splittedMinutes].map(function (item) {
return item > 9 ? item : '0' + item;
}).join(':'));
} else {
$(this).val(dateHelper.formatDate(_xdsoft_datetime.now(), options.format));
}
datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());
} else { } else {
var d = dateHelper.parseDate($(this).val(), options.format);
if (d) { // parseDate() may skip some invalid parts like date or time, so make it clear for user: show parsed date/time
$(this).val(dateHelper.formatDate(d, options.format));
} else {
var splittedHours = +([$(this).val()[0], $(this).val()[1]].join('')),
splittedMinutes = +([$(this).val()[2], $(this).val()[3]].join(''));
// parse the numbers as 0312 => 03:12
if (!options.datepicker && options.timepicker && splittedHours >= 0 && splittedHours < 24 && splittedMinutes >= 0 && splittedMinutes < 60) {
$(this).val([splittedHours, splittedMinutes].map(function (item) {
return item > 9 ? item : '0' + item;
}).join(':'));
} else {
$(this).val(dateHelper.formatDate(_xdsoft_datetime.now(), options.format));
}
}
datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val()); datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());
} }