1

在动态插入的输入上设置 jquery 掩码?

我正在尝试以向下格式执行此操作,但我没有成功。

新输入会丢失掩码。

有人可以帮我解决这个问题吗?

<div class="control">
<input type="text" name="item_valor" placeholder="Valor" class="input valor" maxlength="255" id="id_item_valor">
</div>

.

 $(document).ready(function(){
        $('.valor').mask("#.##0,00", {reverse: true});
    });

.

$(document).on('click', '#addItem', function () {
var newElement = $('.control:last').clone(true);
$('.control:last').after(newElement);
})
4

3 回答 3

3

像这样将掩码设置在输入的焦点上

$(document).on("focus", ".valor", function() { 
    $(this).mask("#.##0,00", {reverse: true});
  });

您可能可以将其从 document.ready 函数中删除,也可以将其缩短为 1 行,而不是克隆和附加 2 行

$('.control:last').after($('.control:last').clone());

这是一个工作小提琴https://jsfiddle.net/tv7w3Lku/3/

旁注:克隆具有 ID 的元素将创建多个具有相同 ID 的元素,这可能不是最好的方法,在这种情况下你应该坚持使用 class

于 2019-02-18T20:24:01.013 回答
1

只需在将每个输入添加到 DOM 后调用您的掩码函数即可。

$(document).on('click', '#addItem', function () {
     var newElement = $('.control:last').clone(true);
     $('.control:last').after(newElement);
      $('.valor').mask("#.##0,00", {reverse: true});
})
于 2019-02-18T19:39:31.397 回答
0

我遇到了同样的问题,发现 .masked() 函数会将掩码应用于动态值。希望这可以帮助:

HTML:

<input name="phone" type="text">

<button>insert dynamic value</button>

JS:

$(function(){
    $("input[name='phone']").mask("(000) 000-0000");
});

$("button").click(function(){
    newPhoneNumber = "1231231234";
    maskedValue = $("input[name='phone']").masked(newPhoneNumber));
    $("input[name='phone']").val(maskedValue);
});

小提琴:https ://jsfiddle.net/qcsf3z0j/4/

和文档:https ://igorescobar.github.io/jQuery-Mask-Plugin/docs.html#getting-a-masked-value-programmatically

于 2020-12-21T17:09:03.707 回答