You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用jQuery检测表单中被点击的是number input还是textarea

怎么区分触发事件的是number输入框还是textarea?

嘿,这个问题其实很好解决!在你已经绑定的change事件回调里,this就代表当前触发事件的那个DOM元素,我们可以用几种方式来判断它的类型:

方式1:直接检查DOM元素的属性

每个元素都自带tagName和type属性,我们可以利用这两个属性来区分:

$('body').on('change', 'input textarea', function() {
  // 先判断是不是textarea
  if (this.tagName === 'TEXTAREA') {
    console.log('当前触发的是textarea哦');
    // 这里写针对textarea的处理逻辑
  } 
  // 再判断是不是number类型的input
  else if (this.tagName === 'INPUT' && this.type === 'number') {
    console.log('当前触发的是number输入框');
    // 这里写针对number input的处理逻辑
  }
});

方式2:用jQuery的is()方法简化判断

如果你更习惯用jQuery的API,is()方法可以直接帮你匹配选择器,代码会更简洁:

$('body').on('change', 'input textarea', function() {
  const $currentElem = $(this);
  if ($currentElem.is('textarea')) {
    console.log('这是textarea触发的事件');
  } else if ($currentElem.is('input[type="number"]')) {
    console.log('这是number输入框触发的事件');
  }
});

小提醒:注意事件类型的区别

你现在用的是change事件,它是在元素值改变且失去焦点时才触发的。如果你的需求是检测点击(获得焦点)的瞬间就判断元素类型,那可以把事件换成click或者focus:

// 点击或聚焦时就判断元素类型
$('body').on('click focus', 'input[type="number"], textarea', function() {
  const $elem = $(this);
  if ($elem.is('textarea')) {
    console.log('你点击/聚焦了textarea');
  } else {
    console.log('你点击/聚焦了number输入框');
  }
});

这样就能精准区分当前交互的是哪种元素啦~

内容的提问来源于stack exchange,提问作者arman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:06:29