【问题标题】:How to find which input field is modified?如何查找修改了哪个输入字段?
【发布时间】:2013-05-04 07:26:11
【问题描述】:

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

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

【问题讨论】:

  • 你说的修改是什么意思?从何时起?你的意思是不同于数据库存储的值还是别的什么?
  • ^^^ +1 您的意思是客户端更改还是更改数据库中的数据?

标签: php javascript jquery html input


【解决方案1】:
<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】:

您可以创建 2 个不同的输入,1 个使用 originalVal 之类的类隐藏,1 个对每个输入可见。

然后在提交时你做这样的事情:

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

【讨论】:

  • 但他说...“我可以比较以前的字段和当前字段并检查。但我正在尝试找到更优化的方法来执行此操作。我可以使用 javascript、php、jquery 和 html技巧”
  • 好吧,没有优化的方法可以做到这一点,因为如果您使用.change 事件,它将在他更改值时触发,但如果您恢复为旧值,则会考虑输入改变了,即使它不是......所以在我看来,这是优化的方式,我确认他的第一种方式是正确的......
【解决方案3】:

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

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/

编辑:更进一步,在修改输入时,如果更改的值与原始值不同,它将元素 ID 推送到数组。

【讨论】:

    【解决方案4】:

    我会说你最好的选择是从输入字段中获取初始值,然后再进行比较。然后,只需单击提交按钮后进行比较。例如,将它放在 $(document).ready() 中的某个位置,这样它将检索初始值。

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

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

    【讨论】:

      【解决方案5】:

      您可以像这样与默认值进行比较

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-22
        • 1970-01-01
        • 1970-01-01
        • 2022-07-29
        • 1970-01-01
        • 2013-06-23
        • 1970-01-01
        • 2017-11-13
        相关资源
        最近更新 更多