Jithu
Jithu

Reputation: 111

How to find which input field is modified?

I have couple of input field and values in them. This is projected to the user. The user can modify these values and submit them. When submitted, I need to check which input field is modified.

I can compare the previous fields and current fields and check. But I am trying to find more optimized way to do this. I can use javascript, php, jquery and html tricks

Upvotes: 2

Views: 2990

Answers (5)

Khalid Rafik
Khalid Rafik

Reputation: 49

you could compare with default value like this

for(var i in formObj)
    if('value' in formObj[i] && formObj[i].value!=formObj[i].defaultValue){
        //do what ever here ...
    }

Upvotes: 0

user1470118
user1470118

Reputation: 412

I would say your best bet would be to get the initial values from the input fields, and then compare them later on. Then, just do a comparison once the submit button is clicked. For instance, put this somewhere in your $(document).ready() that way it will retrieve the initial value.

var oldValue=[];
$('input').each(function(){
    oldValue.push($(this).val());
});

Then you can compare later on when you hit the submit.

Upvotes: 0

tymeJV
tymeJV

Reputation: 104775

Since no code was given, you could compare what was in the input compared to what is now in it.

HTML Input:

<input type="text" id="testInput" value="DB Value"/>

jQuery

var modifiedInputs = [];
var oldVal = "";

$("#testInput").focus(function() {
    oldVal = this.value;
}).blur(function() {
    console.log("Old value: " + oldVal + ". New value: " + this.value);

    //If different value, add to array:
    if (this.value != oldVal) {
        modifiedInputs.push(this.id);
    }
});

Fiddle: http://jsfiddle.net/tymeJV/tfmVk/1/

Edit: Took it a step further, on modification of an input, if the changed value is different from the original, it pushes the elements ID to the array.

Upvotes: 0

Karl-Andr&#233; Gagnon
Karl-Andr&#233; Gagnon

Reputation: 33870

You can create 2 different input, 1 hidden with a class like originalVal and 1 visible for every input.

Then on submit you do something like that :

$('input').each(function(){
     var currentVal = $(this).val();
     var originalVal = $(this).closest('.originalVal').val()
     if(currentVal  != originalVal){
          //This input has changed
     }
})

Upvotes: 1

Adil Shaikh
Adil Shaikh

Reputation: 44740

<input id="input1" value="someValue" type="text">
<input id="input2" value="someValue" type="text">

Script:

$('input').on('change',function(){
  var id = $(this).attr('id');
  alert("input field is modified : ID = " + id);
});

Upvotes: 6

Related Questions