绕过JavaScript表单处理程序
-
21-09-2019 - |
题
我们正在编写ASP.NET MVC应用程序。默认情况下,如果客户端浏览器已启用JavaScript,处理程序为每个页面上的形式设置,通过JavaScript,以便成为一个发送提交下一个Ajax“管道”(逐步增强)。
但是,对于一个形式(页面的几个上),我想这个处理程序被绕过/忽略。有没有一种简单的方法来做到这一点?或许通过重写通过直接在DOM指定自己onsubmit事件处理程序 - ?或一些其它方法
我们使用jQuery,所以这些库提供给我。
解决方案
像
class="oldschool"
- 我将最有可能通过分配一些独特的属性,与你的标准(就是那个不应该有AJAX行为)打破了形式解决这个问题。在JavaScript代码,挂接在表单上的提交事件处理程序,那么我会确保排除任何形式有特殊标记:
$('form:not(.oldschool)').submit(function() {
// Do fancy AJAX stuff
});
更新:为了的不的改变任何外部JavaScript文件,并有通过改变HTML标记简单介绍了新的行为,可考虑做这样的事情:
<form ... onsubmit="if (typeof $ == 'function') $(this).unbind('submit');">
这是毫无美感,但它似乎完成工作 - 至少在浏览器中我可以在这里找到。
其他提示
虽然我不知道我明白你的意思是“从DOM”我想你不能改变原有的AJAX / JS代码,但你应该能够在某个地方插入一个小script
标签,它的代码后运行用于设置AJAX提交处理程序。
进一步假设该处理程序集的形式$("form").submit(...)
或类似可以使用此
$('selectorForYourForm').unbind('submit');
作为该原始js代码之后运行,将解除绑定任何处理程序原码为这种形式的提交操作设置。
不隶属于 StackOverflow