jQuery 输入值未定义或白色文本

jQuery input value undefined or white text

这个问题大概已经问过上千遍了,不知道是不是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);
    });

如有任何想法,我们将不胜感激。

this 关键字不会像您期望的那样起作用,因为您使用的是 es6 箭头函数格式,什么会改变上下文,请使用 e.target 而不是它。

看看

$('input[type="text"]').on('input', (e) => {
  console.log(e.target.value);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" value="test">

这是因为您使用的箭头函数的范围与普通函数不同。

通常你可以用传统的函数表达式替换箭头函数并使用$(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'>