在普通的javascript中防止关注按钮单击

时间:2011-10-10 11:10:48

标签: javascript focus onclick

我面临的问题或多或少都是here所描述的问题,(即我有一个提交输入,当它在选项卡后获得焦点时会以编程方式单击,但是当用户点击时也会调用焦点处理程序按钮,导致双提交)。在链接的帖子中建议的解决方案,但我需要一个不需要jQuery的解决方案。有没有人对此有所了解?请注意,我需要按钮的单击行为保持不变,因为它绑定到asp .net服务器端事件。谢谢!

2 个答案:

答案 0 :(得分:2)

您需要阻止表单提交,因此添加事件侦听器,然后编写希望JavaScript处理提交表单的方式。还要+1问你如何在不依赖任何框架的情况下对这个问题进行有效编码! : - )

一些粗略的代码,可以让您了解如何阻止表单提交...

if (window.addEventListener)
{
 forms[i].addEventListener('submit',function(e) {e.preventDefault(); eval(id_forms[e.target.id]+'();');},false);
}
else if (window.attachEvent)
{
 forms[i].attachEvent('onsubmit',function(e,f) {e.returnValue=false; eval(id_forms[e.srcElement.id]+'();');});
}

答案 1 :(得分:2)

我最终得到了一个keyUp和keyDown处理程序,我在其中设置/取消设置了一个isKeyPressed变量。我的理解是,标签时发生的事件顺序如下:

  • 的keyDown
  • 焦点获得
  • 使用keyUp

因此,在焦点事件处理程序中,我检查焦点是否通过Tab键获得(即,如果isKeyPressed设置为true)并在那里提交表单。否则,如果在click()之后获得焦点,则isKeyPressed将不会设置为true,并且我不会以编程方式触发表单提交。