这个问题可能已经被问过一千遍了,但是我不知道这是否是因为SEO,我还没有找到合适的解决方案。我在Chrome中收到未定义或空白的文字。
$('input[type="text"]').on('input', (a, b) => {
console.log(this.value);
});
这在我也尝试过的控制台中始终返回未定义的值:
$('input[type="text"]').on('input', (a, b) => {
console.log(b);
});
$('input[type="text"]').on('input', (a, b) => {
console.log($(this).val());
});
$('input[type="text"]').on('input', (a, b) => {
console.log(a.value);
});
$('input[type="text"]').on('input', (a, b) => {
console.log(b.value);
});
任何想法都会非常感激。
答案 0 :(得分:6)
datawire/prom-statsd-exporter:0.6.0
关键字将无法正常工作,因为您使用的是es6箭头函数格式,这会改变上下文,请使用this
代替它。
看看What does “this” refer to in arrow functions in ES6?
e.target
$('input[type="text"]').on('input', (e) => {
console.log(e.target.value);
});
答案 1 :(得分:3)
这是因为您使用的箭头功能的范围不同于普通功能。
通常,您可以使用常规函数表达式替换箭头函数并使用$(this)
或使用事件处理程序中的目标对象来获取输入的值
$('input[type="text"]').on('input', function(a, b) {
console.log($(this).val());
});
$('input[type="text"]').on('input', (a, b) => {
console.log(a.target.value);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type='text'>