jQuery事件提交未触发用户操作

时间:2015-12-24 11:50:35

标签: javascript jquery jquery-events

我试图将一个通用表单onsubmit事件监听器添加到宽网站,在那里我无法为每个页面添加特定的事件监听器。

该活动应该为所有"形式"页面中的元素。

到目前为止,我所尝试的是:

$(function() {
    $("form").submit(function(event) {
        alert("submit");
    });
});

示例页面dom:

<form method="post">
  <input type="text" name="afield" />
  <button>
  submit!
  </button>
</form>

但事件不会发生,你知道我做错了什么吗? 我无法编辑表单html代码,或创建针对特定表单的事件处理程序(例如,通过名称/ ID)。

谢谢!

3 个答案:

答案 0 :(得分:2)

您的表单已提交,因为您需要event.preventDefault()默认浏览器提交。

首先确保您已将代码包装在DOM准备就绪中 使用.on()方法进行事件委托 使用Event.preventDefault

jQuery(function( $ ){ // DOM is now ready and $ alias secured

    $(document).on("submit", "form", function(event) { // Future and existent form Elements
        event.preventDefault(); // prevent browser to default submit
        alert("submit");        // do anything you like
    });

});

https://api.jquery.com/ready/
http://api.jquery.com/on/
http://learn.jquery.com/using-jquery-core/document-ready/
https://developer.mozilla.org/en/docs/Web/API/Event/preventDefault

此外,请确保在结束<script>标记之前包含jQuery库和</body>标记(最好)。

答案 1 :(得分:1)

你的表格似乎稍后出现,它从一开始就不存在。

$(function() {
    $("body").on('submit', "form", function(event) {
        alert("submit");
    });
});

答案 2 :(得分:1)

在脚本之前添加* jQuery库:

DataMember

*:对我来说似乎不见了。始终关注控制台是否存在错误。