Добавьте вход с маской jquery - PullRequest
0 голосов
/ 20 января 2020

Здравствуйте, ребята, у меня есть этот скрипт ниже, который добавляет ввод, но я не могу вставить маски. Плагин, который я использую https://github.com/igorescobar/jQuery-Mask-Plugin

В первом поле маска работает, при добавлении она не добавляет маску.

Может помочь?

<script type="text/javascript">
$(document).ready(function() {
    var wrapper         = $(".input_fields_wrap"); //Fields wrapper
    var add_button      = $(".add_field_button"); //Add button ID
    $(add_button).click(function(e){ //on add input button click
        e.preventDefault();
            $(wrapper).append("<div><input type=\"text\" name=\"mytext[]\" id=\"date\"/><a href=\"#\" class=\"remove_field\">Remove</a></div>");
    });

    $(wrapper).on("click",".remove_field", function(e){ //user click on remove text
        e.preventDefault(); $(this).parent('div').remove();
    })
});    
</script>

<div class="input_fields_wrap">
    <button class="add_field_button">Add More Fields</button>
    <div><input type="text" name="mytext[]" id="date"></div>
</div>
<script type="text/javascript">
    $('#date').mask('00/00/0000');
</script>

Ответы [ 3 ]

1 голос
/ 20 января 2020

Прежде всего, измените селектор идентификатора #date класс .date, потому что вы не можете иметь более одного элемента с одинаковым идентификатором.

Во-вторых, вам нужно переместить $('.date').mask('00/00/0000'); в методе $(document).ready(function() {}).

В-третьих, вам нужно привязать маску к вновь созданному элементу ввода. Ниже приведена копия вашего рабочего кода после внесения поправок в предложенные выше изменения.

    <script type="text/javascript">
    $(document).ready(function () {
        var wrapper = $(".input_fields_wrap"); //Fields wrapper
        var add_button = $(".add_field_button"); //Add button ID
        $(add_button).click(function (e) { //on add input button click
            e.preventDefault();
            $(wrapper).append("<div><input type=\"text\" name=\"mytext[]\" class=\"date\"/><a href=\"#\" class=\"remove_field\">Remove</a></div>");
            $('.date').mask('00/00/0000');
        });

        $(wrapper).on("click", ".remove_field", function (e) { //user click on remove text
            e.preventDefault();
            $(this).parent('div').remove();
        })
        $('.date').mask('00/00/0000');
    });
</script>

<div class="input_fields_wrap">
    <button class="add_field_button">Add More Fields</button>
    <div><input type="text" name="mytext[]" class="date"></div>
</div>
<script type="text/javascript">
    $('#date').mask('00/00/0000');
</script>
1 голос
/ 20 января 2020

Добавить $('#date').mask('00/00/0000'); внутри $(document).ready(function() {}) Поскольку не гарантировано, что документ завершил загрузку, когда вы запускаете его в блоке скрипта, как этот. Доко: https://igorescobar.github.io/jQuery-Mask-Plugin/docs.html

0 голосов
/ 20 января 2020

Слегка очищен.

var wrapper = $(".input_fields_wrap");
var button = $(".add_field_button");
var input = $("#date");

button.click(function (e) {
    e.preventDefault();
    wrapper.append("<div><input type=\"text\" name=\"mytext[]\" id=\"date\"/><a href=\"#\" class=\"remove_field\">Remove</a></div>");
});

wrapper.on("click", ".remove_field", function (e) {
    e.preventDefault();
    $(this).parent('div').remove();
})

input.mask('00/00/0000');
...