Подтвердить что ты не робот

AutoNumeric.js удаляет форматирование перед отправкой формы

Я использую плагин jQuery AutoNumeric, но когда я отправляю форму, я не могу удалить форматирование полей перед POST.

Я пытался использовать $('input').autonumeric('destroy') (и другие методы), но он оставляет форматирование текстовых полей.

Как я могу POST неформатированные данные на сервер? Как я могу удалить форматирование? Есть ли атрибут для него в исходном конфиге или где-то еще?

Я не хочу отправлять сериализованные данные формы на сервер (с AJAX). Я хочу отправить форму с неформатированными данными, как обычное действие HTML.

4b9b3361

Ответ 1

Я написал лучший, несколько более общий взлом для этого в 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;
});

Этот код очищает форму w/обработку ошибок от неавтономных значений.

Ответ 2

Внутри обратного вызова данных вы должны вызвать метод getString, как показано ниже:

        $("#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) {

                    }
                }
            }
        }
    });

Ответ 3

Используйте метод get.

'get' | возвращает неформатированный объект через ".val()" или ".text()" | $(Селектор).autoNumeric( 'получить');


<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>

Это всегда будет отправлять "15". Теперь сделайте объявление:)


Зеркальное исходное значение:

<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>

В submit.php игнорировать значение для my_field_formatted и вместо этого использовать my_field.

Ответ 4

Вы всегда можете использовать функцию php str_replace

str_repalce(',','',$stringYouWantToFix);

он удалит все запятые. вы можете придать значение целому числу, если необходимо.

Ответ 5

$("input.classname").autoNumeric('init',{your_options});
$('form').submit(function(){
   var form=$(this);
   $('form').find('input.classname').each(function(){
       var self=$(this);
       var v = self.autoNumeric('get');
       // self.autoNumeric('destroy');
       self.val(v);
   });
});

classname - это ваш класс ввода, который будет инициализирован как autoNumeric Извините за плохой английский ^ _ ^

Ответ 6

Существует еще одно решение для интеграции, которое не мешает вашей проверке на стороне клиента и не вызывает флеш неформатированного текста перед отправкой:

var input = $(selector);
var proxy = document.createElement('input');
proxy.type = 'text';
input.parent().prepend(proxy);
proxy = $(proxy);
proxy.autoNumeric('init', options);
proxy.autoNumeric('set', input.val())''
proxy.change(function () {
    input.val(proxy.autoNumeric('get'));
});

Ответ 8

Я придумал это, кажется, самый чистый способ. Я знаю, что это довольно старая ветка, но это первый матч Google, так что я оставлю это здесь на будущее

$('form').on('submit', function(){
    $('.curr').each(function(){
        $(this).autoNumeric('update', {aSign: '', aDec: '.', aSep: ''});;
    });
});

Ответ 9

В более новых версиях вы можете использовать опцию:

unformatOnSubmit: true