Jquery 表单导致链接无法正常运行?

Jquery 表单导致链接无法正常运行?,jquery,html,forms,Jquery,Html,Forms,我在一个电子商务网站上工作,它有一些不可编辑的HTML。他们提供的其中一个功能是“快速”添加到购物车按钮,当您单击它时,您将保持在页面上,但会弹出一个小窗口,显示购物车的内容,包括您刚才添加的项目。我写了一个小脚本,当显示在产品类别列表中时,它会将这个快速添加链接添加到所有产品中,但是当您单击这个链接时,它会将您发送到实际的购物车页面,而不会打开小窗口 我认为这是因为它是在一种形式内发生的。我可能错了,但这是我唯一能想到的事情,为什么会发生。相关HTML: <form class="sea

我在一个电子商务网站上工作,它有一些不可编辑的HTML。他们提供的其中一个功能是“快速”添加到购物车按钮,当您单击它时,您将保持在页面上,但会弹出一个小窗口,显示购物车的内容,包括您刚才添加的项目。我写了一个小脚本,当显示在产品类别列表中时,它会将这个快速添加链接添加到所有产品中,但是当您单击这个链接时,它会将您发送到实际的购物车页面,而不会打开小窗口

我认为这是因为它是在一种形式内发生的。我可能错了,但这是我唯一能想到的事情,为什么会发生。相关HTML:

<form class="search_results_section" method="post" name="MainForm" id="MainForm" action="/searchresults.asp" onsubmit="return OnSubmitSearchForm(event, this);">
   <!-- other stuff -->
      <a class="addit" href="/ShoppingCart.asp?ProductCode=BBB-DWCB">Add To Cart</a>
   <!-- other stuff -->
</form>

<a class="addit" href="/ShoppingCart.asp?ProductCode=BBB-DWCB">Add To Cart</a>

感谢您的帮助

如果要将表单提交回自身,则无需指定操作:

<form name="MyForm" method="post" action="" ...>

您的表单是这样的

<form class="search_results_section" method="post" name="MainForm" id="MainForm" action="/searchresults.asp" onsubmit="return OnSubmitSearchForm(event, this);">
由于您在表单(
MainForm
)中有一个id,因此最好以这种方式在代码
e.preventDefault()中使用它,它阻止表单提交的默认行为(停止提交)

更新:

另外,在表单中,您有一个
a
标记,如

<a class="addit" href="/ShoppingCart.asp?ProductCode=BBB-DWCB">Add To Cart</a>
更新:

如果您无法编辑表单,并且需要使用
标记而不是
submit
按钮,则必须将处理程序绑定到该链接的单击事件,如

<form class="search_results_section" method="post" name="MainForm" id="MainForm" action="/searchresults.asp">
    <!-- other stuff -->

    <input type="submit" class="addit" name="btn_sub"  />
</form>
$('#MainForm a.addit').click(function(e){
    e.preventDefault();
    $.get($(this).attr('href')+'&'+$(this).closest('form').serialize(), function(response){
        console.log(response)
    },'json');
});
/ShoppingCart.asp?ProductCode=BBB-DWCB&forminput1=value1&forminput2=value2
并且,在服务器端,从
$\u get
数组中获取值,因为您在
标记(
href=“/ShoppingCart.asp?ProductCode=BBB-DWCB”
)中的url中使用
params
,所以只需将序列化表单数据添加到当前
url
的末尾,并避免
post
(如果没有必要)。因此,您的
url
最终看起来像

<form class="search_results_section" method="post" name="MainForm" id="MainForm" action="/searchresults.asp">
    <!-- other stuff -->

    <input type="submit" class="addit" name="btn_sub"  />
</form>
$('#MainForm a.addit').click(function(e){
    e.preventDefault();
    $.get($(this).attr('href')+'&'+$(this).closest('form').serialize(), function(response){
        console.log(response)
    },'json');
});
/ShoppingCart.asp?ProductCode=BBB-DWCB&forminput1=value1&forminput2=value2
因为这个代码

$(this).attr('href')+'&'+$(this).closest('form').serialize()

你能告诉我们将事件绑定到链接的代码吗?同意ComFreek的说法,必须有一个JavaScript事件绑定到该超链接。请通过搜索打开弹出窗口的函数名来定位
.on()
.bind()
事件。我实际上不确定它们是如何完成的,或者绑定了哪些事件。但我刚刚搜索了代码,现在编辑了我的问题,并添加了我认为它们所在的js文件的链接。我已经搜索了“.on”和“.bind”,但运气不好,但也许你会比我更清楚?不幸的是,所有的表单内容都是不可编辑的,除非有一种方法我可以用jQuery来完成?该网站正在使用Volusion,一种电子商务服务。他们网站上的大部分代码都是自动生成的,不可直接编辑,但我可以使用JavaScript。但是没有PHP。您上次的编辑似乎基本上解决了这个问题。它现在将其添加到购物车而不重定向您,但不会导致出现迷你弹出窗口。这很好,因为我实际上不知道该函数调用什么,但我可以轻松创建其他通知。而且,“&forminput1=value1&forminput2=value2”似乎没有必要,因为它仍然只适用于jQuery。谢谢