How can I remove AutoNumeric formatting before sub

2020-07-02 10:41发布

I'm using the jQuery plugin AutoNumeric but when I submit a form, I can't remove the formatting on the fields before POST.

I tried to use $('input').autonumeric('destroy') (and other methods) but it leaves the formatting on the text fields.

How can I POST the unformatted data to the server? How can I remove the formatting? Is there an attribute for it in the initial config, or somewhere else?

I don't want to send the serialized form data to the server (with AJAX). I want to submit the form with the unformatted data like a normal HTML action.

9条回答
小情绪 Triste *
2楼-- · 2020-07-02 11:17

You could use the getArray method (http://www.decorplanit.com/plugin/#getArrayAnchor).

$.post("myScript.php", $('#mainFormData').autoNumeric('getArray'));

查看更多
Evening l夕情丶
3楼-- · 2020-07-02 11:19

I came up with this, seems like the cleanest way. I know it's a pretty old thread but it's the first Google match, so i'll leave it here for future

$('form').on('submit', function(){
    $('.curr').each(function(){
        $(this).autoNumeric('update', {aSign: '', aDec: '.', aSep: ''});;
    });
});
查看更多
狗以群分
4楼-- · 2020-07-02 11:30

I wrote a better, somewhat more general hack for this in jQuery

$('form').submit(function(){
    var form = $(this);
    $('input').each(function(i){
        var self = $(this);
        try{
            var v = self.autoNumeric('get');
            self.autoNumeric('destroy');
            self.val(v);
        }catch(err){
            console.log("Not an autonumeric field: " + self.attr("name"));
        }
    });
    return true;
});

This code cleans form w/ error handling on not autoNumeric values.

查看更多
贪生不怕死
5楼-- · 2020-07-02 11:32

Use the get method.

'get' | returns un-formatted object via ".val()" or ".text()" | $(selector).autoNumeric('get');


<script type="text/javascript">
    function clean(form) {
        form["my_field"].value = "15";
    }
</script>

<form method="post" action="submit.php" onsubmit="clean(this)">
    <input type="text" name="my_field">
</form>

This will always submit "15". Now get creative :)


Mirrored raw value:

<form method="post" action="submit.php">
    <input type="text" name="my_field_formatted" id="my_field_formatted">
    <input type="hidden" name="my_field" id="my_field_raw">
</form>

<script type="text/javascript">
    $("#my_field_formatted").change(function () {
        $("#my_field").val($("#my_field_formatted").autoNumeric("get"));
    });
</script>

The in submit.php ignore the value for my_field_formatted and use my_field instead.

查看更多
smile是对你的礼貌
6楼-- · 2020-07-02 11:35

With newer versions you can use the option:

unformatOnSubmit: true
查看更多
做自己的国王
7楼-- · 2020-07-02 11:39

Inside data callback you must call getString method like below:

        $("#form").autosave({
        callbacks: {
            data: function (options, $inputs, formData) {

                return $("#form").autoNumeric("getString");
            },
            trigger: {
                method: "interval",
                options: {
                    interval: 300000
                }
            },
            save: {
                method: "ajax",
                options: {
                    type: "POST",
                    url: '/Action',
                    success: function (data) {

                    }
                }
            }
        }
    });
查看更多
登录 后发表回答