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

时间:2018-11-29 15:00:35

标签: javascript jquery dom-events jquery-events

这个问题可能已经被问过一千遍了,但是我不知道这是否是因为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);
    });

任何想法都会非常感激。

2 个答案:

答案 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'>