Маска времени ввода с помощью jquery
Я использую meioMask - плагин маски jQuery, чтобы поместить маску времени в текстовое поле. Вот JsFiddle. Работает хорошо. Но мне тоже нужно поставить hh:mm
в текстовом поле, чтобы пользователь знал, что вводить в текстовое поле.
Как это сделать
РЕДАКТИРОВАТЬ: Мне также нужно положить AM / PM в маске. и мне нужно 12 часов формата времени.
5 ответов
Похоже, вы сможете установить это с помощью плагина.
Вот начало может быть?
Если вы посмотрите в коде, я думаю, что вы должны проходить setMask
options
объект. Это выглядит как defaultValue
это возможный вариант.
Похоже, что следующее должно работать (но это не так):
$("#txtTime").setMask({mask: "time", defaultValue:"hh:mm"});
Вот на что я смотрел:
$.fn.extend({
setMask : function(options){
return $.mask.set(this, options);
},
А также
// default settings for the plugin
options : {
attr: 'alt', // an attr to look for the mask name or the mask itself
mask: null, // the mask to be used on the input
type: 'fixed', // the mask of this mask
maxLength: -1, // the maxLength of the mask
defaultValue: '', // the default value for this input
Если вы хотите, чтобы это было просто и понятно, вот быстрая, но полная демонстрация (см.: http://jsfiddle.net/bEJB2/), которая включает placeholder
и маска работают вместе. Он использует плагин jQuery jquery.maskedinput. JavaScript такой чистый и понятный
<div class="time-container">
<h1> Demo of Mask for 12 Hour AM/PM Input Field w/ Place Holder </h1>
<input class="timepicker" type="text" size="10" placeholder="hh:mm PM" />
</div>
<script>
$.mask.definitions['H'] = "[0-1]";
$.mask.definitions['h'] = "[0-9]";
$.mask.definitions['M'] = "[0-5]";
$.mask.definitions['m'] = "[0-9]";
$.mask.definitions['P'] = "[AaPp]";
$.mask.definitions['p'] = "[Mm]";
$(".timepicker").mask("Hh:Mm Pp");
</script>
Я бы повторил то, что @YiJiang сказал о PolyFills и Modernizr для placeholder
обработка в не-HTML5 браузерах.
Я думаю, что это может сработать
$(document).ready(function(){
$("#txtTime").setMask('time').val('hh:mm');
})
Используя jQuery Masked Input Plugin.
$.mask.definitions['H'] = "[0-2]";
$.mask.definitions['h'] = "[0-9]";
$.mask.definitions['M'] = "[0-5]";
$.mask.definitions['m'] = "[0-9]";
$(".timepicker").mask("Hh:Mm", {
completed: function() {
var currentMask = $(this).mask();
if (isNaN(parseInt(currentMask))) {
$(this).val("");
} else if (parseInt(currentMask) > 2359) {
$(this).val("23:59");
};
}
});
Вы можете использовать HTML5 placeholder
атрибут для создания текста-заполнителя, затем используйте jQuery, чтобы добавить поддержку браузеров, которые его не поддерживают, и удалите его, как только input
элемент получает фокус.
var timeTxt = $("#txtTime").setMask('time');
var placeholder = timeTxt.attr('placeholder');
timeTxt.val(placeholder).focus(function(){
if(this.value === placeholder){
this.value = '';
}
}).blur(function(){
if(!this.value){
this.value = placeholder;
}
});
Смотрите: http://www.jsfiddle.net/9dgYN/2/. Вам также следует рассмотреть возможность использования сценария, такого как Modernizr, для добавления функции обнаружения для placeholder
приписывать.