使用jquery输入时间掩码
我正在使用meioMask – 一个jQuery掩码插件,将时间掩码放在文本框中。 这是JsFiddle 。 它运作良好。 但我还需要在文本框中输入hh:mm
,让用户知道要在文本框中输入什么内容。
这该怎么做。
编辑:我还需要将am / pm放在掩码中。 我需要12小时的时间格式。
看起来您应该可以使用插件设置它。
这可能是一个开始?
如果查看代码,我认为你应该传递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非常干净清晰
Demo of Mask for 12 Hour AM/PM Input Field w/ Place Holder
我会回应@YiJiang所说的关于PolyFills和Modernizr在非HTML5浏览器中处理placeholder
。
我认为这可能有用
$(document).ready(function(){ $("#txtTime").setMask('time').val('hh:mm'); })
您可以使用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
属性添加特征检测。
使用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"); }; } });