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' />
我有一个命令可以执行此操作,但此命令不仅获取最后一个值,还获取单击或键入的元素中的所有更改。
我只需要获取最后一次单击或键入的值,这可能吗?
这是我的命令
$('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' />