2013-04-04 12 views
9

jqueryプラグイン - > AutoNumeric(http://www.decorplanit.com/plugin/)を使用しています。フォームを送信すると、POST前にフィールドの書式を削除できません。autoNumeric.jsフォームを送信する前に書式を削除します

$('input').autonumeric('destroy')(と他の方法)を使用しようとしましたが、テキストフィールドに書式設定が残ります。

フォーマットされていないデータをサーバーに投稿するにはどうすればよいですか?どのようにフォーマットを削除できますか?初期設定や他の場所に属性がありますか?

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

答えて

12

私は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ない値にエラー処理/ wの形をきれいにします。

+0

でこれを使用しますが、フォームが送信されている間に2〜3秒間、フォーマットされていない値が表示されます。それは単なる美容問題ですが、少し迷惑です。 – Adrian

+1

もうこれ以上の必要はなく、今すぐ次のオプションを使うことができます: '{unformatOnSubmit:true}' – Alex

1

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

'get' | ".val()"または ".text()"を介してフォーマットされていないオブジェクトを返します。 $(セレクタ).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を使用しています。

+0

getメソッドは、入力フィールドの値を返します。私はフォーマットされていないフォームを提出する必要があります。私はフィールドの書式なしの値を取得したくありません。 – zeal

+0

それから値を '取得 'して提出しますか?私はあなたの場所にカスタムの 'onsubmit'ハンドラがあると仮定しています。もしそうでなければ、それを必要とします。 – Halcyon

+0

ですので、ajaxリクエストなしでフォーマットされていないデータを送信することはできません。 – zeal

1

あなたはいつもそれがすべてのカンマを削除します

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

PHP str_replace機能を使用することができます。必要に応じて値を整数にキャストできます。

+0

なぜPHPですか? (fyi私はアプリのサーバー側でjavaを使用していました)間違った解決策ではなく、答えです。 – zeal

+0

それは問題ではありません。 Javaにはおそらく同様の機能を持つメソッドがあります。私はそれを解決策として見ています。なぜなら、それは書式を取り除くためです。なぜそれをクライアント側で行うことが重要か? – Reza

+1

です。これは、多層アプリケーションでははるかにクリーンです。アイデアのためにhttp://en.wikipedia.org/wiki/Loose_couplingを読んでください。 – zeal

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

        } 
       } 
      } 
     } 
    }); 
0
$("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); 
    }); 
}); 

クラス名があり

0

^_ ^悪い英語のため申し訳ありませんautoNumeric としてinitになり、あなたの入力クラスでありますクライアント側の検証を妨げず、提出前にフォーマットされていないテキストのフラッシュを引き起こさない統合のためのもう一つのソリューションです:

関連する問題