2016-11-29 3 views
-3

フォームを送信する前に変更された入力フィールドのみを使用してJSONを作成します。Form Submitで入力フィールドのみを変更してJSONを作成します。

どのように変更した値をJSONの形式で保存することができますか?

$(document).ready(function() { 

    $('#save').click(saveChangedValues); 

} 



function saveChangedValues(e) { 

    e.preventDefault(); 

    var fields = $("#frmStudInfo :input").serializeArray(); 

    trackFormDataChanges(fields); 


    //make a ajax call with json only with the changed fields 

    $.ajax{(
    )} 

} 

var finalJSON = {}; 

function trackFormDataChanges(fields){ 

    $.each(fields, function(i, field) { 
     //create final json 
    }); 
} 
<form id="frmStudInfo"> 

    Name <input type="text" id="name" name="name" > 
    Date <input type="date" id="bdate" name="bdate"> 
    ID <input type="number" id="stdID" name="stdID"> 
    <input type="submit" id="save" value="Save" /> 

<form> 
+2

変更後、マークフィールドが汚れています。汚れたフィールドをループし、jsonを作成して、送信してください。 –

+0

あなたはオブジェクトを意味します。 JSONは文字列形式です。データを保存するために文字列を操作しない限り、これは心配する必要はありません。また、[この質問](http://stackoverflow.com/questions/1184624/convert-form-data-to-javascript-object-with-jquery?rq=1)の回答を使用してくださいあなたが行った変更を追跡するだけです。 –

答えて

0

にあなたはこのような何かを行うことができます。

var prevFields; 
 
$("#save").click(function(e){ 
 
    e.preventDefault(); 
 
    var fields = $("#frmStudInfo :input").serializeArray(); 
 
    var changedInputs; 
 
    if(prevFields){ 
 
    changedInputs = fields.filter(function(v){ 
 
     prevValue = prevFields.find(val => val.name === v.name); 
 
     return !prevValue || v.value !== prevValue.value; 
 
    }); 
 
    }else{ 
 
    changedInputs = fields; 
 
    } 
 
    console.log("changed inputs", changedInputs); 
 
    prevFields = fields; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id="frmStudInfo"> 
 
Name <input type="text" id="name" name="name" > 
 
Date <input type="date" id="bdate" name="bdate"> 
 
ID <input type="number" id="stdID" name="stdID"> 
 
<input id="save" type="submit" id="save" value="Save" /> 
 
</form>

アイデアが保存してでそれらを使用する各全くの入力の値を格納することです次のセーブでどのセクタが変更されたかを確認します。

+0

タイタスに感謝しました。 –

+0

私のシナリオには2つの異なるjsonがあります。データベースからのoldJSONとフォームからの新しいjsonが送信されます。私はこれらの2つを比較し、編集されたフィールドだけを取得する必要があります。これらのJSONの形式はどちらも異なります。 ** OldJSON ** - >({"name": "USCIS"、 "date":06/12/2016 .......})**フィールド(例の変数)** - > ([オブジェクトオブジェクト]、[オブジェクトオブジェクト] .......) –

関連する問題