input 在Ios上 输入拼音还没选择汉字都会触发@input 安卓正常

input 在Ios上 输入拼音还没选择汉字都会触发@input 安卓正常

2 回复

苹果系统就这样的 虽然你没选文字 但是在你输入时 输入框中 已经有内容了 所以会触发input事件


这是一个iOS平台特有的问题,主要是由于iOS系统对拼音输入的处理机制与Android不同导致的。

解决方案:

  1. 使用composition事件替代input事件:
<input 
  @compositionstart="handleCompositionStart"
  @compositionend="handleCompositionEnd"
  @input="handleInput"
/>
  1. 在data中定义标记:
data() {
  return {
    isComposing: false
  }
}
  1. 实现事件处理:
methods: {
  handleCompositionStart() {
    this.isComposing = true
  },
  handleCompositionEnd(e) {
    this.isComposing = false
    this.handleInput(e)
  },
  handleInput(e) {
    if(this.isComposing) return
    // 这里处理实际的input逻辑
  }
}
回到顶部