当前位置: 首页 > 知识库问答 >
问题:

停止所有事件的传播

车峻熙
2023-03-14

我正在尝试处理用户的Backspace按键。我有2个处理程序绑定到一个输入元素。由于无法在onChange事件处理程序中检测按键,因此我必须在onKeyDown中进行。我想在按下backspace时停止onChange事件的传播(并在onKeyDown事件处理程序中处理)。有什么想法如何实现这一点?谢谢!

共有3个答案

向杜吟
2023-03-14

因为我认为这样做是可能的。您可以创建一些辅助变量/属性,并在onKeyDown处理程序中为其设置keyCode。然后,您可以在任何地方有条件地使用它(对我来说,在onChange事件处理程序中)。

罗奇文
2023-03-14

如果试图防止退格,可以将输入的值存储在state中,并将其作为prop传递给输入,在输入发生变化时,将e.target.value与存储在state中的值进行比较,并更新state变量

     
  const [value, setValue] = useState("");

  const checkValue = (newValue) => {
    if (value.length < newValue.length) setValue(newValue);
  }; 
    
  <input value={value} onChange={(e) => checkValue(e.target.value)} />

浦毅
2023-03-14
If you has Select Option: When you click on select tag, onChange and onClick event is fired. I solved this by creating a onClick handler side onChange handle and then calling e.stopPropogation().

<select onClick ="St(event)" onChange ="Tc(event)" >
     <option>Case</option>
</select>

St(event) {
  event.stopPropagation();
  console.log('Next');
}

Tc(event) {
  event.stopPropagation();
  console.log('Nex here');
}
 类似资料:
  • 我试图在JavaFX中重现一个JavaScript游戏的一些行为。该程序有几个数字文本字段,可以在游戏运行时进行编辑。它在运行时也接受字母键盘命令。 macOS、Java17、JavaFX17。

  • 在调试应用程序时,我希望主线程在我放入JavaFX事件队列的每个Runnable之后等待 等待它被执行(即可见)。然而,这里有两个问题: 首先,它并不是一个标准的、GUI驱动的JavaFX应用程序。它更像是一个脚本,显示和更新一个JavaFX阶段。所以结构看起来像这样: 其次,禁用此“功能”应该很容易,即等待Runnable执行(使用当前方法没有问题,但使用替代方法也应该可行)。 做这件事的最好方

  • 问题内容: 当我为实体创建时,在Spring Data REST中不会通过Spring Boot 1.4.0.M3(也是Spring Boot 1.3.5)触发关联的方法-这是Bug还是 设计 错误? 我有一个具有的实体: 在我发布时应触发: 除非我添加: 当我注释掉注释时,方法再次触发。 由于它们在Spring Data REST中运行两个不同的概念层,因此它们似乎应该独立运行-还是我误会了什么

  • 问题内容: 考虑以下: 如何做到这一点,以便当用户单击范围时不会触发的click事件? 问题答案: 使用event.stopPropagation()。 对于IE:

  • 本文向大家介绍JavaScript中使用stopPropagation函数停止事件传播例子,包括了JavaScript中使用stopPropagation函数停止事件传播例子的使用技巧和注意事项,需要的朋友参考一下 JS中的事件默认是冒泡方式,逐层往上传播,可以通过stopPropagation()函数停止事件在DOM层次中的传播。如以下例子: HTML代码: DOM逐层往上传播,所以单击butt

  • 问题内容: 当用户滚动页面时,我想做一些有趣的jQuery东西。但是我不知道如何解决这个问题,因为只有方法。 有任何想法吗? 问题答案: 您可以使每次用户滚动时都有一个超时被覆盖。这样,当他在一定毫秒后停止运行时,您的脚本将运行,但是如果他在此期间滚动,则计数器将重新开始,并且脚本将等待直到完成滚动为止。 更新: 因为这个问题又采取了一些行动,所以我认为我不妨使用添加事件的jQuery扩展对其进行