【问题标题】:Javascript: How to fire Onclick Event of button before Onchange event of another textbox which is on same pageJavascript:如何在同一页面上另一个文本框的 Onchange 事件之前触发按钮的 Onclick 事件
【发布时间】:2013-08-01 14:13:20
【问题描述】:

在我的页面中,我有一个具有 Onchange 事件的文本框和一个具有 Onclick 按钮的按钮。 每当用户在 Textbox 中键入任何文本然后立即单击按钮时,首先会触发 Textbox 的 Onchange 事件,然后执行 Button 的 onclick 事件。

有什么方法可以在 Onchange 之前触发 Onclick 事件,或者至少在 Onchange 事件中,如果单击按钮导致 Onchange 事件,则不会发生任何事情。

我尝试了不同的方法,但仍然没有成功。

【问题讨论】:

  • 听起来你必须重新考虑你的逻辑。你在这些活动上做什么?
  • 不要将您的更改函数绑定到更改事件。在点击处理程序的末尾执行它。
  • 我正在使用 Ajax HTML 编辑器,它的值通过使用 Ajax 回调保存在数据库中,因为使用了 OnClientChnage 事件。在 OnClientChnage 内部调用了一个回调方法来保存数据。如果在更改后它工作正常编辑器的文本,用户单击页面中的任意位置,但是当用户单击编辑器工具栏上的任何按钮(粗体、下划线等)时出现问题,在这种情况下,OnClientChange 应该“不”被触发或至少在其中我们应该能够“避免”回调请求保存。

标签: javascript


【解决方案1】:

正如其他人所说,我不知道您为什么要这样做,但这是您想要实现的替代方案:

Javascript

var oldValue = null;

function onClickCall(value) {
  if(value != oldValue) {
    onChangeCall(value);
    oldValue = value;
  }
}

function onChangeCall(value) {
  // do something here
  alert(value);
}

HTML

<input type="text" id="myTextInput" />
<input type="button" onclick="onClickCall(document.getElementById('myTextInput').value)" />

【讨论】:

  • @Matei .. 我正在使用 Ajax HTML 编辑器,其值通过使用 Ajax 回调保存在数据库中,因为使用了 OnClientChnage 事件。在 OnClientChnage 内部调用了一个回调方法来保存数据。它有效很好,如果在更改编辑器的文本后,用户单击页面中的任何位置,但是当用户单击编辑器工具栏上存在的任何按钮(粗体、下划线等)时就会出现问题,在这种情况下,OnClientChange 应该“不”被触发或至少在其中我们应该能够“避免”保存回调请求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-21
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 2011-11-23
相关资源
最近更新 更多