代码之家  ›  专栏  ›  技术社区  ›  Damovisa

如何在jquery中找到表单提交事件中单击的按钮?

  •  5
  • Damovisa  · 技术社区  · 15 年前

    var submitted = false;
    $(function() {
        $('form').bind('submit', function(e) {
            if (!submitted && CanSubmit(e)) {
                submitted = true;
                return true;
            } else {
                return false;
            }
        });
    });
    

    CanSubmit 方法,我需要询问单击的按钮,以确定是否应允许提交。

    请注意,我无法绑定到特定的单击事件-请参阅 this previous question 更多细节。

    在Firefox中,我可以使用 e.originalEvent.explicitOriginalTarget

    e 跨浏览器方式的参数?

    4 回复  |  直到 6 年前
        1
  •  2
  •   Tgr    15 年前

    实际上你可以换个 $('form').bind('submit' 具有 $(':submit').bind('click' 你的代码也能正常工作(你可以使用 this 查看单击的内容)。

        2
  •  2
  •   Cristian Sanchez    15 年前

    使用 e.target -jQuery查询 normalizes it 跨浏览器一致性。

    我能找到的最接近 explicitOriginalTarget document.activeElement (对于IE)-它是事件期间具有焦点的元素。对于基于webkit的浏览器,没有等效的浏览器。因此,没有真正的跨浏览器方法只使用事件对象来实现这一点。

        3
  •  2
  •   Community CDub    8 年前

    $(function() {
        $('form').bind('submit', function(event) {
              // regular submit form stuff here
            ...
              // and unbind it
            $('this').unbind(event);       
        });
    });
    

    .unbind() 在“使用事件对象”下

    .one() ,相当于上述。

    $(function() {
        $('form').one('submit', function(event) {           // <== Only executed once
              // regular submit form stuff here
            ...
        });
    });
    

    如果你有 $.post() $.get() 提交绑定到多个事件/元素的表单时,只需确保使用 event 对象,然后也解除所有其他处理程序的绑定,反之亦然。您可以使用 one of about four methods to unbind event handlers .

        4
  •  0
  •   Randall Kwiatkowski    15 年前

    .one 函数,保证它只触发一次。

    $(function() {
        $('form').one('submit', function(event) {
          // regular submit form stuff here     
        });
    });