web-dev-qa-db-ja.com

フォームを送信する前にAutoNumericフォーマットを削除するにはどうすればよいですか?

JQueryプラグインを使用しています AutoNumeric フォームを送信すると、POSTの前のフィールドのフォーマットを削除できません。

$('input').autonumeric('destroy')(およびその他のメソッド)を使用しようとしましたが、テキストフィールドにフォーマットが残ります。

書式設定されていないデータをサーバーにPOSTするにはどうすればよいですか?書式を削除するにはどうすればよいですか?初期設定または他の場所にその属性がありますか?

シリアル化されたフォームデータを(AJAXを使用して)サーバーに送信したくありません。通常のHTMLアクションのように、フォーマットされていないデータを使用してフォームを送信したいと思います。

13
zeal

私は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;
});

このコードは、autoNumeric値以外のエラー処理を使用してフォームをクリーンアップします。

13
zeal

新しいバージョンでは、次のオプションを使用できます。

unformatOnSubmit: true
4
jpaoletti

データコールバック内では、次のように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) {

                    }
                }
            }
        }
    });
2
ararog

getメソッドを使用します。

'get' | 「.val()」または「.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>

これは常に"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を使用します。

1
Halcyon

いつでもphpstr_replace関数を使用できます

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

すべてのコンマが削除されます。必要に応じて、値を整数にキャストできます。

1

クライアント側の検証を妨げたり、送信前にフォーマットされていないテキストをフラッシュしたりしない、統合のための別のソリューションがあります。

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'));
});
0
Jan Drábek

getArrayメソッド( http://www.decorplanit.com/plugin/#getArrayAnchor )を使用できます。

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

0
Alin A
$("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として初期化される入力クラスです英語が悪いのでごめんなさい^ _ ^

0
Asdar Syam

私はこれを思いついた、最もきれいな方法のようです。かなり古いスレッドだと知っていますが、これは最初のGoogleの試合なので、将来のためにここに残しておきます

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