plentz / jquery-maskmoney

jQuery plugin to mask data entry in the input text in the form of money (currency).

Home Page:https://plentz.github.io/jquery-maskmoney/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Would like to use this script in DataTables

opened this issue · comments

Hi, recently I am using DataTables (https://datatables.net/) and I was trying to implement your script in the Editor part (https://editor.datatables.net/).

To implement we have to write some integration code (https://editor.datatables.net/manual/development/field-types). I tried to do this, but something I could not find out and is only resulting in [..]Uncaught TypeError: Cannot read property 'createRange' of undefined
at getInputSelection (jquery.maskMoney.js:121)[..] errors.

To use a 3rd party script it is necessary to define 3 functions; create, set and get. I thought that I did this well, but the final result is not working.

The 3 functions I wrote for integration are below:

_fieldTypes.moneymask = {
    create: function (conf) {
        var that = this;

        conf._input = $('<input/>')
            .attr($.extend(
                {
                    id: DataTable.Editor.safeId(conf.id),         
                    type: `text`,
                    prefix: `R$ `,
                    suffix: ``,
                    affixesStay: true,
                    thousands: `.`,
                    decimal: `,`,
                    precision: 2,
                    allowZero: false,
                    allowNegative: false,
                    doubleClickSelection: true,
                    allowEmpty: false,
                    bringCaretAtEndOnFocus: true
                },
                conf.attr || {} ));

//        console.log(conf._input.attr(`id`));
//        console.log(conf._input.attr(`type`));
//        console.log(conf._input.attr(`prefix`));
//        console.log(conf._input.attr(`suffix`));
//        console.log(conf._input.attr(`affixesStay`));
//        console.log(conf._input.attr(`thousands`));
//        console.log(conf._input.attr(`decimal`));
//        console.log(conf._input.attr(`precision`));
//        console.log(conf._input.attr(`allowZero`));
//        console.log(conf._input.attr(`allowNegative`));
//        console.log(conf._input.attr(`doubleClickSelection`));
//        console.log(conf._input.attr(`allowEmpty`));
//        console.log(conf._input.attr(`bringCaretAtEndOnFocus`));

        return conf._input;
    },

    set: function (conf, val) {
        conf._input
            .trigger(`.maskMoney`)
            .trigger(`keypress.maskMoney`)
            .trigger(`keydown.maskMoney`)
            .trigger(`blur.maskMoney`)
            .trigger(`focus.maskMoney`)
            .trigger(`click.maskMoney`)
            .trigger(`dblclick.maskMoney`)
            .trigger(`cut.maskMoney`)
            .trigger(`paste.maskMoney`)
            .trigger(`mask.maskMoney`)
            .maskMoney(`mask`,val)[0];
//
            console.log(conf._input.maskMoney('mask',val)[0])
    },

    get: function (conf) {
//        console.log(conf._input.maskMoney(`unmasked`)[0])

        return conf._input.maskMoney(`unmasked`)[0];
    }