如何查找被修改的输入字段

How to find which input field is modified?

本文关键字:修改 输入 字段 何查找 查找      更新时间:2023-09-26

我有几个输入字段和值。这是投影给用户的。用户可以修改这些值并提交它们。当提交时,我需要检查哪些输入字段被修改了。

我可以比较以前的字段和当前字段并检查。但我正在努力寻找更优化的方法来做到这一点。我可以使用javascript, php, jquery和html技巧

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

脚本:

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

您可以创建2个不同的输入,一个隐藏的类,如originalVal和一个可见的每个输入。

然后在提交时做这样的操作:

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

由于没有给出代码,您可以将输入中的内容与现在的内容进行比较。

HTML输入:

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

小提琴:http://jsfiddle.net/tymeJV/tfmVk/1/

Edit:更进一步,在修改输入时,如果修改后的值与原始值不同,则将元素ID压入数组。

我认为最好的办法是从输入字段中获取初始值,然后稍后再对它们进行比较。然后,只需在单击提交按钮后进行比较。例如,把它放在$(document).ready()中的某个地方,这样它就会检索初始值。

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

然后你可以在点击提交时进行比较。

你可以像这样与默认值比较

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