我正在使用Robin Herbot's jquery inputmask处理我应用中的一些DateTime内容。
我希望始终显示遮罩,您可以将clearMaskOnLostFocus
属性设置为false
$.extend($.inputmask.defaults, {
'clearMaskOnLostFocus': false
});
如果您的输入直接来自用户按下键盘,则此功能非常有用。当面具空时,面具仍会显示。我的问题是当textbox
的值以编程方式设置为空字符串时,显示空掩码。
$('#id').val(''); //this will remove the mask until hover or focus
在我开始修改插件之前,我想问一下,希望我只是遗漏了一些东西。
答案 0 :(得分:1)
我最终修改了内部fn.val
函数,以便在以编程方式清除元素时,它会将值设置为空掩码。
$('#id').val(''); //this will set the value to an empty mask, ie __/__/____
//changes were made to this function
$.fn.val = function ()
{
if (arguments.length == 0)
{
var $self = $(this);
if ($self.data('_inputmask'))
{
if ($self.data('_inputmask')['opts'].autoUnmask)
return $self.inputmask('unmaskedvalue');
else
{
var result = $.inputmask.val.apply($self);
var inputData = $(this).data('_inputmask'), masksets = inputData['masksets'],
activeMasksetIndex = inputData['activeMasksetIndex'];
return result != masksets[activeMasksetIndex]['_buffer'].join('') ? result : '';
}
} else return $.inputmask.val.apply($self);
} else
{
var args = arguments;
//if there are args, and they are undefined, null or empty then use the native .val function
if (args.length > 0 && isNullOrEmpty(args[0]))
{
return $.inputmask.val.apply($(this));
}
else
{
return this.each(function ()
{
var $self = $(this);
var result = $.inputmask.val.apply($self, args);
if ($self.data('_inputmask'))
$self.triggerHandler('setvalue.inputmask');
return result;
});
}
}