javascript 中的一条命令是否可以获取 body 中所有元素上单击或按下的最后一个值?

Its possible get the last value clicked or pressed on all element in body with one command in javascript?

我有一个命令可以执行此操作,但此命令不仅获取最后一个值,还获取单击或键入的元素中的所有更改。

我只需要获取最后一次单击或键入的值,这可能吗?

这是我的命令

$('body').on("click keypress",function(e){console.log(e.target.value);}); 

例如,输入元素中的目标值获取最后键入的值,或者在 select 元素中获取值或 selected 形式。

我的命令get

input1 

typed a get a  input 1

typed b get ab  input 1


typed c get c input 2

typed f get abf input 1

typed d get cd input 2

select check box value options m get m

我需要知道如何使用一个命令只获取最后一部分 在这个例子中

input 2 value cd input1 value abf check value m

例如,如果我选择下拉菜单,我的命令获取值红色,然后再次选择相同的下拉菜单获取蓝色,然后我的命令记录值红色和蓝色;但是对于正文中存在的所有元素,我只需要最后一个

我重新引用最后更改的值或元素(下拉;复选框或输入;等)

您可以轻松地将它们存储在一个对象中。我的方法唯一的问题是它们都需要不同的 类 或 ID。真正的问题是,为什么要采用这种方法?

$(document).ready(function() {

  var last_data = {};

  function store_update(id_class, value) {
    if (value !== last_data[id_class]) {
      last_data[id_class] = value
    };
    console.log(last_data);
  }

  function getID(obj) {
      try {
          var id_class = $(obj).attr('id');
          if (!id_class) {
            id_class = $(obj).attr('class');
          }
          return id_class;
      } catch (ex) {
        return undefined;
      }
  }

  $('input[type="text"], textarea').on('keyup', function(e) {  
    var id_class = getID(this);
    if (id_class) {
      store_update(id_class, e.key);
    }
  });
  
  $('input[type="checkbox"]').on('change',function () {
    var id_class = getID(this);
    if (id_class) {
      store_update(id_class, $(this).prop('checked'));
    }
  });
  
  $('select').on('change',function () {
    var id_class = getID(this);
    if (id_class) {
      store_update(id_class, this.value);
    }
  });


});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' class='inp1' />
<input type='text' class='inp2' />
<input type='text' class='inp3' />
<input type='text' class='inp4' />
<input type='text' class='inp5' />
<input type='text' class='inp6' />
<input type='text' class='inp7' />
<input type='text' class='inp8' />
<input type='text' class='inp9' />
<input type='text' class='inp10' />
<select class='myselect'>
<option value='1'>test 1</option>
<option value='2'>test 2</option>
<option value='3'>test 3</option>
</select>
<input type='checkbox' class='inp11' />
<input type='checkbox' class='inp12' />

如果这不正确,请解释得更清楚。

---编辑---

如果 OP 只是想将最后提交的值赋给一个元素,那么使用

$(document).ready(function () {

  $('input, textarea, select').on('change', function () {
    
    if ( $(this).is('[type="text"], select') ) {
      console.log('You just changed my value to "' + this.value + '"');
    } else if ( $(this).is('[type="checkbox"]') ) {
      console.log('You just flagged my value to "' + this.checked + '"');
    }
  });
  
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' class='inp1' />
<input type='text' class='inp2' />
<input type='text' class='inp3' />
<input type='text' class='inp4' />
<input type='text' class='inp5' />
<input type='text' class='inp6' />
<input type='text' class='inp7' />
<input type='text' class='inp8' />
<input type='text' class='inp9' />
<input type='text' class='inp10' />
<select class='myselect'>
    <option value='1'>test 1</option>
    <option value='2'>test 2</option>
    <option value='3'>test 3</option>
    </select>
<input type='checkbox' class='inp11' />
<input type='checkbox' class='inp12' />