如何在使用 jQuery 屏蔽输入时保留后缀
How to keep a suffix while masking a input using jQuery
我正在尝试使用 jQuery 使用以下掩码“########-##.####.7.09.009”来屏蔽用户输入,所以当用户开始输入它会像这样:
1______-__.____.7.09.009(用户输入 1)
12_____-__.____.7.09.009(用户输入 2)
123____-__.____.7.09.009(用户输入 3)
依此类推,直到到达“7.09.009”部分。
用户应该不能编辑那个部分,它就像一个固定的占位符。我尝试使用 Jasny's input mask 并取得了一些成功,但由于数字被 0 屏蔽并且固定后缀具有 0,因此它允许用户在固定部分中有零的地方键入。我没有找到将数字占位符从 0 替换为其他内容的方法,因为我认为这可以解决我的问题。
然后我找到了另一个 jQuery mask plugin,它允许我使用 # 来屏蔽数字,但由于它也将 0 识别为数字的占位符,因此它最终无法正常工作。我也试过像这样创建一个自定义掩码:
$("#numero-processo").mask('0000000-00.0000.A.BC.BBC',
{placeholder: "_______-__.____.7.09.009",
'translation': {
A: {pattern: /[7]/},
B: {pattern: /[0]/},
C: {pattern: /[9]/}
}});
这在一定程度上奏效了,但是当用户到达固定后缀部分时,(he/she) 将不得不实际键入后缀“7.09.009”,这是唯一可以由于自定义掩码而允许在那里。但是,我不希望用户键入后缀,它需要固定在那里。有谁知道如何做到这一点?谢谢。
你通常通过让固定部分在输入之外来解决这个问题(如果用户不应该修改它,那么如果它实际上不在可变部分则更符合人体工程学)。
<input type="text" />.7.09.009
你可以用一些 css 让它变得更好,你必须在 JS 或你用来处理数据的语言中添加它。所以也许是这样的:
<div class="mask_field" addendum=".7.09.009"><input type="text" />.7.09.009</div>
可能更容易使用。
$("#numero-processo").keyup(function(){
var input = $(this).val();
if(input.length == 15) {
input += ".7.09.009";
$(this).val(input);
}
});
您可以使用此库完成此操作
<script src="https://rawgit.com/RobinHerbots/Inputmask/4.x/dist/jquery.inputmask.bundle.js"></script>
您的 javascript 将是:
<input id="numero-processo" placeholder="_______-__.____.7.09.009" />
<script>
$(document).ready(function(){
$("#numero-processo").inputmask("9999999-99.9999.7.0\9.00\9");
});
</script>
这是一个 jsfiddle:https://jsfiddle.net/3kyau2p8/
我正在尝试使用 jQuery 使用以下掩码“########-##.####.7.09.009”来屏蔽用户输入,所以当用户开始输入它会像这样:
1______-__.____.7.09.009(用户输入 1)
12_____-__.____.7.09.009(用户输入 2)
123____-__.____.7.09.009(用户输入 3)
依此类推,直到到达“7.09.009”部分。
用户应该不能编辑那个部分,它就像一个固定的占位符。我尝试使用 Jasny's input mask 并取得了一些成功,但由于数字被 0 屏蔽并且固定后缀具有 0,因此它允许用户在固定部分中有零的地方键入。我没有找到将数字占位符从 0 替换为其他内容的方法,因为我认为这可以解决我的问题。
然后我找到了另一个 jQuery mask plugin,它允许我使用 # 来屏蔽数字,但由于它也将 0 识别为数字的占位符,因此它最终无法正常工作。我也试过像这样创建一个自定义掩码:
$("#numero-processo").mask('0000000-00.0000.A.BC.BBC',
{placeholder: "_______-__.____.7.09.009",
'translation': {
A: {pattern: /[7]/},
B: {pattern: /[0]/},
C: {pattern: /[9]/}
}});
这在一定程度上奏效了,但是当用户到达固定后缀部分时,(he/she) 将不得不实际键入后缀“7.09.009”,这是唯一可以由于自定义掩码而允许在那里。但是,我不希望用户键入后缀,它需要固定在那里。有谁知道如何做到这一点?谢谢。
你通常通过让固定部分在输入之外来解决这个问题(如果用户不应该修改它,那么如果它实际上不在可变部分则更符合人体工程学)。
<input type="text" />.7.09.009
你可以用一些 css 让它变得更好,你必须在 JS 或你用来处理数据的语言中添加它。所以也许是这样的:
<div class="mask_field" addendum=".7.09.009"><input type="text" />.7.09.009</div>
可能更容易使用。
$("#numero-processo").keyup(function(){
var input = $(this).val();
if(input.length == 15) {
input += ".7.09.009";
$(this).val(input);
}
});
您可以使用此库完成此操作
<script src="https://rawgit.com/RobinHerbots/Inputmask/4.x/dist/jquery.inputmask.bundle.js"></script>
您的 javascript 将是:
<input id="numero-processo" placeholder="_______-__.____.7.09.009" />
<script>
$(document).ready(function(){
$("#numero-processo").inputmask("9999999-99.9999.7.0\9.00\9");
});
</script>
这是一个 jsfiddle:https://jsfiddle.net/3kyau2p8/