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

用于清除遗留边缘中的输入的事件(版本44)

王宏深
2023-03-14

我有一个简单的html输入字段

<input id="query" type="text" oninput="QueryInput(this.value)"  onchange="QueryChange(this.value)">

我尝试了不同的方法来捕获Edge(我的版本是Microsoft Edge 44.18362.449.0)中的clear(当我用鼠标输入文本框以在其中键入内容时,文本框右侧会出现X)事件。

<p id="demo_typed"></p>
<p id="demo_typing"></p>
<p id="demo_oninput"></p>
<p id="demo_onchange"></p>

<script>
function QueryChange(query) {
  document.getElementById("demo_onchange").innerHTML = `You changed to ${query}`;
}
function QueryInput(query) {
  document.getElementById("demo_oninput").innerHTML = `You inputted ${query}`;
}
document.getElementById("query").addEventListener('input', (event) => {
  document.getElementById("demo_typing").innerHTML = `You are typing ${event.target.value}`;
});
document.getElementById("query").addEventListener('change', (event) => {
  document.getElementById("demo_typed").innerHTML = `You typed ${event.target.value}`;
});
</script>

但是它们都没有对清除事件做出反应(除了在它之后,当鼠标离开输入时可以触发的更改):这是不可行的吗?

function QueryChange(query) {
  document.getElementById("demo_onchange").innerHTML = `You changed to ${query}`;
}
function QueryInput(query) {
  document.getElementById("demo_oninput").innerHTML = `You inputted ${query}`;
}
document.getElementById("query").addEventListener('input', (event) => {
  document.getElementById("demo_typing").innerHTML = `You are typing ${event.target.value}`;
});
document.getElementById("query").addEventListener('change', (event) => {
  document.getElementById("demo_typed").innerHTML = `You typed ${event.target.value}`;
});
<p><strong>Note:</strong> The question is specific to Legacy Edge, not the newer Chromium-based Edge.</p>

<input id="query" type="text" oninput="QueryInput(this.value)"  onchange="QueryChange(this.value)">

<p id="demo_typed"></p>
<p id="demo_typing"></p>
<p id="demo_oninput"></p>
<p id="demo_onchange"></p>

共有1个答案

蒋华美
2023-03-14

假设a

不,没有活动。

回答,作为T.JCrowder在他的评论中建议,我发现最好的建议是用一个样式隐藏边缘清除按钮

<style>
input::-ms-clear {
    display: none
}
</style>
<form id="myForm" onsubmit="event.preventDefault();"> 
function clear_input() {
  document.getElementById("myForm").reset();
  document.getElementById("demo_typed").innerHTML = '';
  document.getElementById("demo_typing").innerHTML = '';
  document.getElementById("demo_oninput").innerHTML = '';
  document.getElementById("demo_onchange").innerHTML = '';
}

document.getElementById("myBtnClear").addEventListener("click", function() {
  clear_input();
});  
document.getElementById("query").addEventListener('mouseup', (event) => {
  beforeVal = event.target.value;
  setTimeout(() => {
    afterVal =event.target.value;
    if (beforeVal !== '' && afterVal === '') {
        clear_input();
    }
  }, 1);
  
});
 类似资料:
  • 在chrome上,当用户单击清除按钮时,搜索输入会触发“搜索”事件。 是否有一种方法可以在Internet Explorer10上用javascript捕获相同的事件?

  • 问题内容: epoll的手册页上有一个触发边的示例代码,如下所示: 在do_use_fd函数中,我在while循环中调用非阻塞recv直到EAGAIN为止,示例代码运行良好。 我对此示例代码有一个疑问,假设现在我有50个套接字客户端连接,突然有10个客户端同时写入数据,因此epoll_wait()将返回10,然后转到for循环: 它将调用 这10个客户端,假设n = 5完成,并且n = 6尚未完成

  • 问题内容: 我怎样才能让一个窗口(如,,,,等)预留屏幕的边缘,就像一个码头,任务栏,Trillian的,或者微软的OneNote可以吗?我的目标是尽可能使用标准的JDK库。 问题答案: 此行为非常特定于Windows操作系统,因此无法在标准JDK或AWT / Swing中执行此操作,因为它们需要在多个不同的操作系统上一致地工作。 与您想要的最接近的等效方法是获取当前屏幕的边界并移动/调整窗口大小

  • 我必须对遗留代码应用Spring AOP,而不改变现有代码中的任何内容。没有bean概念,对象是使用new关键字创建的,因此没有使用ApplicationContext.getBean(“Beanname”)的范围。此外,切入点将被作为来自最终用户的输入,并且将有一个公共方面类。 此外,如果使用Spring AOP是不可能的,那么如何在运行时使用AspectJ。

  • 问题内容: 有没有一种快速的方法来创建带有右侧图标的输入文本元素,以清除输入元素本身(如google搜索框)? 我环顾四周,但只发现了如何将图标作为输入元素的背景。是否有jQuery插件或其他工具? 我想要输入文本元素中的图标,例如: 问题答案: 将a添加到您的输入中 该支持相当不错,但在IE <10中不起作用 旧浏览器的可清除输入 如果您需要IE9支持,请采取以下解决方法 使用标准和一些HTML

  • 问题内容: 我想清除表单中的文件输入。 我知道将源设置为相同的方法…但是该方法不会删除所选的文件路径。 注意 :我希望避免重新加载页面,重置表单或执行AJAX调用。 这可能吗? 问题答案: 如何删除该节点,创建一个具有相同名称的新节点?