大家好,
我在应用程序中的几个字段中使用 jquery.maskedit 插件,但我无法弄清楚如何编写这样的掩码:
文档:000000-0
我需要该字段始终填充零并且方向从右到左。
是否有任何 jQuery 插件或者有人知道如何使用 jquery.maskedit 设置此掩码?
最佳答案
免责声明:存在错误。但这是实现这一目标的一种方法。
$.fn.specialMask = function () {
this.on('click focus', function () {
var self = this;
setTimeout(function() {self.value = self.value;}, 15); //move cursor to end
})
.on('keypress', function (e) {
var
num,
$this = $(this),
cur = $this.val().match(/Document: ([0-9]*\-[0-9])/); //get value
if (cur[1][0] !== '0') { return; } //input is full
if (e.keyCode >= 48 && e.keyCode <= 57) { //numeric keys
num = e.keyCode - 48;
} else if (e.keyCode >= 96 && e.keyCode <= 105) { //numpad
num = e.keyCode - 96;
} else {
return;
}
cur = cur[1].replace('-', '').substr(1) + '-' + num; //shift value left
$this.val('Document: ' + cur); //update input
});
};
$('#tehInput').mask('Document: 999999-9', {placeholder: '0'}).specialMask(); // initialize the input
我使用了jquery.maskedinput.js,因为我找不到你提到的maskedit插件。如果您有链接,请尝试将其添加到 jsfiddle - 我希望这可以与其他插件类似地工作?
如果占位符未内置于插件中,则从右到左替换占位符很难伪造(如上所示)。我曾经做过的一个更简单的技巧是制作一个像这样的假输入:
<div class="input-wrapper">
<span class="input-pre"></span>
<input type="text">
</div>
然后,您可以将包装器设置为看起来像普通输入,将实际输入设置为没有边框的空白白色,并在包装器上发生“单击”事件时将输入聚焦。将前导 0 放入预跨度中,用 JS 保持更新,没有人会更明智!
关于用于文档前导零和从右到左的 jQuery 掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4875308/