2

can anyone help me with this code

var jumlah = parseInt($("#jumlah-form3").val()); 
            var nextform = jumlah + 1;
            $("#insert-form3").append(
                "   <tr id='layanan"+nextform+"'>" +
                "       <td class='p-1' width='25%'>" +
                "           <select class='form-control select2bs4' name='bd_akun[]' id='bd_akun"+nextform+"' style='width: 100%; border-radius:0px'>" +
                "               <option value=''>Pilih...</option>" +
                "               <?php echo akun_list() ?>" +
                "           </select>" +
                "       </td>" +
                "       <td class='p-1'><input type='text' class='form-control' style='border-radius:0px;' name='bd_uraian[]' id='bd_uraian"+nextform+"'></td>" +
                "       <td class='p-1'>" +
                "           <select class='form-control select2bs4' name='bd_pajak[]' id='bd_pajak"+nextform+"' style='width: 100%; border-radius:0px'>" +
                "               <option value=''>Pilih...</option>" +
                "               <?php echo pajak_list() ?>" +
                "           </select>" +
                "       </td>" +
                "       <td class='p-1'><input type='currency' data-type='currency' class='form-control' style='border-radius:0px;' name='bd_subtotal[]' id='bd_subtotal"+nextform+"' /></td>" +
                "       <td class='p-1' style='vertical-align: middle;'><i class='fa fa-minus'></i></td>" +
                "   </tr>");
            $("#jumlah-form3").val(nextform);
            $('.select2bs4').select2({
                theme: 'bootstrap4'
            })

In this section I try to add the currency format to the input form. but unfortunately the format doesn't appear when I add dynamic from. can someone help me to solve this problem Pictur of problem

i use this script to show curency format

<script>
    $("input[data-type='currency']").on({
        keyup: function() {
        formatCurrency($(this));
        },
        blur: function() { 
        formatCurrency($(this), "blur");
        }
    });

    function formatNumber(n) {
        return n.replace(/\D/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",")
    }
    
    function formatCurrency(input, blur) {
        var input_val = input.val();
        if (input_val === "") { return; }
        var original_len = input_val.length;
        var caret_pos = input.prop("selectionStart");
            
        if (input_val.indexOf(".") >= 0) {
            var decimal_pos = input_val.indexOf(".");
            var left_side = input_val.substring(0, decimal_pos);
            var right_side = input_val.substring(decimal_pos);

            left_side = formatNumber(left_side);

            right_side = formatNumber(right_side);
            right_side = right_side.substring(0, 2);

            input_val = left_side + "." + right_side;

        } else {
            input_val = formatNumber(input_val);
            input_val = input_val;
        }
        
        // send updated string to input
        input.val(input_val);
        var updated_len = input_val.length;
        caret_pos = updated_len - original_len + caret_pos;
        input[0].setSelectionRange(caret_pos, caret_pos);
    }
</script>

I get this code from some post here. but i don't remember which post

duncan
  • 31,401
  • 13
  • 78
  • 99

1 Answers1

1

as Swati said.you can bind dynamic event like this

$("#insert-form3").on("keypup","input[data-type='currency']",function() {
    formatCurrency($(this));
});
$("#insert-form3").on("blur","input[data-type='currency']",function(){
    formatCurrency($(this), "blur");
});
nay
  • 1,725
  • 1
  • 11
  • 11