MDN页面上写道:
当一个
<input>
,<select>
, 或者<textarea>
标签的值即将被修改时,DOM会触发beforeinput事件。
可以明确地看到,<select>
标签支持beforeinput
事件。
从我对规范文档的简单阅读来看,这也是正确的:
可信赖的目标: 元素(特别是控件类型如HTMLInputElement等)或启用contenteditable属性的任何元素
(我加的重点)
然而,似乎没有浏览器实现它。 我已经检查了Chrome、Safari和Firefox。
是否有什么地方我理解错了吗?
const sel = document.getElementById('pet-select')
sel.addEventListener('beforeinput', () => console.log('beforeinput!'))
sel.addEventListener('input', () => console.log('input!'))
<label for="pet-select">Choose a pet:</label>
<select name="pets" id="pet-select">
<option value="">--Please choose an option--</option>
<option value="dog">Dog</option>
<option value="cat">Cat</option>
<option value="hamster">Hamster</option>
<option value="parrot">Parrot</option>
<option value="spider">Spider</option>
<option value="goldfish">Goldfish</option>
</select>
<input>
元素,不是<select>
。 - phuzi<select>
。 - trincot<select>
实际上并不继承自HTMLInputElement
接口。也许MDN文档是错误的。 - yossizahn<select>
。 - Queuebee