2011-12-16 4 views

答えて

10

serializeを使用して、フォーム要素をロギング用の文字列にシリアル化できます。これは、通常のフォーム提出として要素を含めるか含まないかについて同じ規則に従います。唯一の注意点は、明らかな理由からinput type="file"フィールドの内容がシリアル化されていないことです。

$("form :input").change(function() { 
    console.log($(this).closest('form').serialize()); 
}); 

Live demoあなたは$("form").serialize()を使用してクエリ文字列の形で得ることができますドキュメント

+0

nice!どのように私は任意の入力(選択またはテキスト)の変更に解雇を得ることができますか? –

+0

@ToniMichelCaubet:私はどのように答えを表示したかを更新しました。私はちょうど 'change'イベントを使用しました。これは、テキスト入力であなたのために早期に起動できないかもしれません。もしそうなら、ちょうどキーボードイベントを投げてください。それは包括的ではないでしょう(右クリックを検出せず、メニューから貼り付けを選択する)が、これはデバッグのために取るので、おそらく十分です。 –

+0

ありがとうございました。非常に有益です。 –

1

に示す形式を使用して:入力の変更のいずれかのときにそれを発射する

1

これは、すべての時間は何の変化形が記録されます:

$("form :input").change(function(){ 
    console.log($("form").serialize()); 
}); 

編集:

を私は要素がフォーカスを失ったときに変更が実際にのみ発射されることに気づいて、私のfocusout提案を削除しました。

+0

選択ボックスがありません。 –

+0

@ T.J.Crowder良いキャッチ、選択を得るために私の答えを更新し、同様にテキストエリア。 –

1

私はこの小さなコンポーネント製:

$("form :input").change(function() { 
    var fields = $(this).closest('form').serialize(); 
    serialize_to_console(fields); 
}); 


/* 
    SERIALIZE TO CONSOLE 
    Transforms string to array and show each param in console if not empty */ 
var serialize_to_console = function(serialized) { 

    var splited_serialized = serialized.split('&'); 

    $.each(splited_serialized, function(index, key) { 

     var input = key.substr(0, key.indexOf('=')); 
     var value = key.substr(key.indexOf('=') + 1); 

     if(value !== '') 
     console.log('[' + input + '] = \'' + value + '\''); 
    }); 

} 

お楽しみに!

関連する問題