Tag: 事件处理

如何才能正确捕获并重新启动表单提交事件?

这可能不是您通常的“如何捕获表单提交事件?” 题。 我试图准确理解jQuery,vanilla Javascript和浏览器(IE / FF / Chrome / Safari / Opera)如何处理表单提交事件 – 以及它们之间的关系。 ( 请参阅我的另一个问题。 )经过数小时的谷歌搜索和实验,我仍然无法得出结论,无论是因为不和谐还是模糊。 我正在完成一个与网站表单集成的脚本,以便在AJAX请求返回之前无法提交表单。 理想的情况是: 用户填写表格 表单已提交 – 但除了我的之外,没有调用以前绑定的事件处理程序 我的处理程序发出API请求(当然是异步的) 用户确认API响应的validation结果 表单提交继续正常,自动,调用之前被抑制的其他处理程序 我目前的理解是:(这些可能是错的,如果是这样请纠正我) jQuery将表单提交事件处理程序绑定到提交按钮click事件 直接在提交元素click事件上的事件处理程序(无论是在标记中如onclick=””还是使用jQuery绑定)都会先执行 表单submit事件上的事件处理程序(无论是在标记中如onsubmit=””还是使用jQuery绑定)将在下一步执行 调用$(‘[type=submit]’).click()不会调用表单的submit事件,因此不会调用它的处理程序 调用$(‘form’).submit()不会调用提交按钮的click事件,因此不会调用其处理程序 然而,某种程度上,单击提交按钮的用户最终会调用绑定到表单submit事件的处理程序…(但如上所述,调用单击提交按钮不会执行相同的操作) 事实上,用户提交表单的任何方式(通过提交按钮或按Enter键),与jQuery绑定到表单submit事件的处理程序被称为… 现在,我是: 解除绑定处理程序与jQuery绑定到提交按钮的click事件,同时保留对它们的引用 将我自己的处理程序绑定到提交按钮的click事件,因此它首先执行 使用onclick=””和onsubmit=”” (在各自的元素上)绑定标记中的任何处理程序并使用jQuery重新绑定它们(因此它们在我的后面执行),然后将属性设置为null 重新绑定他们的处理程序(从步骤1开始),以便它们最后执行 实际上,这在我自己的测试中非常有效,所以我的事件处理程序首先触发(必要)。 问题和我的问题: 我的处理程序首先触发,就像预期的那样(到目前为止)。 问题是我的处理程序是异步的,所以我必须禁止(preventDefault / stopPropagation / etc)表单submit或提交按钮click事件,该事件调用它…直到API请求完成。 然后,当API请求返回时,一切都是A-OK,我需要自动重新调用表单提交。 但是由于我上面的观察,我如何确保所有事件处理程序都被触发,就像它是一个自然forms提交一样? 获取所有事件处理程序的最简洁方法是什么,首先放入我的事件,然后重新调用表单提交,以便以正确的顺序调用所有内容? $(‘form’).submit()和$(‘form’)[0].submit()之间有什么区别(如果有的话$(‘form’)[0].submit() ? (和$(‘[type=submit]’).click()和$(‘[type=submit]’)[0].click() ) […]

触发内部元素上的单击事件

每个第一个单元格包含链接的表格中的一行需要单击并打开一个URL。 LT5C260A436C41 more data LA5C260D436C41 more data … 完整的行应该是可点击的,而不是只有链接顶部打开fancybox中的详细信息页面,即在页面本身。 所以我试着这样做: $(“table tr”).bind(‘click’,function(e) { e.stopPropagation(); $(this).find(“a”).trigger(‘click’); }); 但似乎事件正在冒泡,导致: 未捕获RangeError: 超出最大调用堆栈大小 如何以正确的方式触发完整行而不是仅仅链接的单击以避免堆栈溢出? 更新:我真的很感谢下面的答案,但我的问题是关于触发事件,而不是执行该事件内的行为。 解决方法可能很好,但在这种情况下不是。

时髦的jQuery mouseleave行为

我有一个类似菜单的下拉容器,它通过绑定“mouseleave”事件来隐藏。 1 2 3 4 5 我遇到的问题是我的容器的子元素包含一个SELECT对象,其中SELECT的OPTIONS物理地扩展到容器的边界之外。 因此,将鼠标hover在边界之外的OPTIONS上会触发“mouseleave”事件以触发并关闭我的下拉。 SELECT是容器的子项,因此在这种情况下,我希望mouseleave事件能够识别它。

如何用jQuery实时显示输入值?

因此,当用户在“#name”中输入内容时,将在“#display”中显示

如何在新添加的行(DataTables)上添加onclick事件?

我正在使用动态添加行 table.row.add 我希望,对于添加到表中的每一行,还要向该行添加onclick事件,以便链接到URL。 那么,我如何引用刚刚添加的行来添加此事件?

为什么IE使用鼠标hover处理程序为服务器端元素添加jQuery属性?

这对我来说不是一个至关重要的知识,但我仍然想知道这里到底发生了什么。 这是一个.NET 3.5 Web窗体应用程序。 其中一个页面有3个服务器端输入,类型为“submit”。 这些输入中的每一个都使用jQuery为它们分配了以下JavaScript处理程序: $(‘.button’).mouseover(function() { $(this).addClass(‘hoverEffect’); }); $(‘.button’).mouseout(function() { $(this).removeClass(‘hoverEffect’); }); 当我运行以下脚本时(是的,这是IE特定的) $(document).ready(function() { d = window.open(); d.document.open(‘text/plain’).write(document.documentElement.outerHTML); }); 在页面上,我得到以下按钮标记: 问题是,这个jQuery1287434381268究竟是什么=“2” ? 这些值从2到4.因此,第一个按钮是2,第二个是3,第三个是4.每次重新加载页面时,1287434381268编号都不同。 我知道它与2个JavaScript处理程序有关,因为如果我删除它们,属性就不再存在了。 这是IE处理jQuery分配处理程序的方式吗? 如果我在IE中执行简单的View-> Source,那么这个东西就不会出现,因为它不会出现在FF Page Source或FireBug中。 编辑:我刚刚在另一个页面上运行了这个启动脚本,其中有大量的JavaScript处理程序都使用jQuery进行了分配。 此属性存在于具有处理程序的每个元素上。

jquery on(’click’)处理程序,用于vars引用的多个元素

NB我知道我添加了id并将它们组合在一个选择器中,例如“#myDiv1,#myDiv2”,所以请不要暗示这一点,因为它与我的问题无关。 有没有办法将下面的变量“链接”在一个on()声明中,可能是一个数组还是什么? var myDiv1 = $(‘Something here’); var myDiv2 = $(‘Something else here’); myDiv1.on(‘click’, function(){ doSomething();}); myDiv2.on(‘click’, function(){ doSomething();}); 我有一堆vars,我需要对鼠标事件做一些广泛的跟踪,并且像上面的例子那样单独设置它们。

jquery firefox stopPropagation()

我将两个事件处理程序绑定到’keydown’上的输入字段。 如果已按下回车键,则第一个事件处理程序需要停止事件的传播,以使其不会触及第二个事件处理程序。 我是这样做的: if (jQuery.browser.msie) { event.cancelBubble = true; } else { event.stopPropagation(); } 现在这一点并不能阻止IE或Firefox中的事件传播。 它命中第一个事件处理程序,然后也命中第二个事件处理程序。 但是,在第二个事件处理程序中,我实际上可以在IE的情况下检查是否(e.cancelBubble)。 有没有办法检查Firefox相同?

jquery多个事件处理程序

我已经根据我正在处理的最新项目中的类名来定义事件处理程序。 对于前 具有类名“foo”的所有元素应以特定方式响应change事件。 并且所有类名为“bar”的元素都应以其他方式响应。 现在我的一些元素属于两个类,即class =“foo bar”,它们应该以两种方式响应。 现在,只调用了一个事件处理函数。 如何同时执行两个响应。

.draggable的Jquery .trigger(’stop’)方法

$(‘#element’).draggable ({ stop: function () { alert (‘stopped’); //do some action here } }).trigger(‘stop’); 没有任何反应,以为#element现在是可拖动的,并且在拖动完成后事件会执行。 我试过.triggerHandle以及’dragstop’作为eventtype,没有运气