如何避免在单击文本框的焦点和选项卡时对文本框进行 onChange 事件调用


How can I avoid onChange event call for a textbox when its focused and tab is clicked?

我在html页面上有几个文本框和一个编辑按钮 - 比如T1,T2,T3,T4。我有 T1 的更改事件。onchange事件使T2 只读=真T3,T4 可编辑(设置只读属性 = 假)

现在,我有一个按钮 - "编辑" - 它的作用是使 T2 只读 = 假T3 和 T4 不可编辑(设置只读属性 = true)焦点转到 T1。

接下来,我现在在T1。我单击选项卡(即使不更改 T1 的值) - 问题出现了 - 触发了 T1 的更改事件!它使T2 只读=真T3,T4 可编辑(设置只读属性 = 假)这是不可取的。

当 T1

处于焦点时,如何避免在 T1 单击选项卡时触发 T1 的更改?非常感谢对此的任何帮助。提前感谢!

我不太确定你在问什么,但onchange可能不是使用的正确函数。如果这不能解决它,请摆弄或发布您的代码,但请尝试将 onchange 触发器替换为 onfocus。

http://www.w3schools.com/jsref/event_onfocus.asp

一旦

您离开文本区域并尝试执行其他操作,就没有任何方法可以阻止该事件,因为一旦模糊元素,就会发生更改。浏览器将在触发下一个事件处理程序之前检测到模糊

您可能需要在 onchange 事件处理程序中使用简短的setTimeout,以便在执行任何操作之前评估T1, T2...变量onchange

由于没有提供有问题的代码,因此很难进一步提供帮助

像这样:

element.onchange = function(){// or $('#mytestarea').on('change....
   setTimeout(function(){
     // should have had enough time for tab values to have changed
     // do whatever you normally do here
   }, 50);
}