首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jQuery动态更改表单操作

使用jQuery动态更改表单操作
EN

Stack Overflow用户
提问于 2011-10-06 20:41:50
回答 3查看 10.8K关注 0票数 5

我的页面上有一张表格,看起来是这样的:

代码语言:javascript
复制
<form action="/home/email" enctype="multipart/form-data" id="email-form" method="post">
// form elements
</form>

根据页面的不同,我希望使用jQuery动态地更改表单的属性,特别是action属性。

代码语言:javascript
复制
$('#send-email').click(function () {
   $('#email-form').attr('action', '@Url.Action("emailaccounting", "home")')
 )};

上面的jQuery成功地呈现为:

代码语言:javascript
复制
<form action="/home/emailaccounting" enctype="multipart/form-data" id="email-form" method="post">
// form elements
</form>

所以,当我点击一个打开弹出表单发送电子邮件的链接时,我可以修改表单属性。然而,当我提交表单时,被击中的动作是原始的-“电子邮件”,而不是“电子邮件会计”。

我玩得更多一些,在电子邮件表单的submit单击处理程序上,我添加了以下内容:

代码语言:javascript
复制
  $('.send-email').click(function (e) {
    // The original form action post will be hit without this...
    e.preventDefault();
    $('#email-form').submit();
  };

使用上面的片段,正确的操作--“电子邮件记帐”--被调用。为什么?我不知道.我希望有人能解释。但我还没有脱离困境-我有一个输入元素来上传一个文件。现在,当我试图上传一个文件在相同的形式,以前的工作,我点击提交,它转到“电子邮件”行动。如果我不尝试做一个文件上传,它会点击“电子邮件会计”操作。

  1. 为什么e.preventDefault()后面跟着提交的表单击中了正确的操作?
  2. 为什么上传一个文件将它指向原始的表单操作,而不是jQuery?

修改的那个?

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2012-10-04 02:28:13

我试着像下面这样做,这对我很有帮助

代码语言:javascript
复制
$('#send-email').click(function () {
   $('#email-form').attr('action', '/home/emailaccounting')
 )};
票数 7
EN

Stack Overflow用户

发布于 2011-10-06 20:43:57

试着做这样的事情:

代码语言:javascript
复制
$('#email-form').attr('action', '<%= Url.Action("emailaccounting", "home") %>');
票数 3
EN

Stack Overflow用户

发布于 2011-10-06 20:44:53

你只是想让动作成为当前页面,不管它是什么?如果是这样的话,您可以只使用action=""

您没有提到您正在测试的浏览器和版本,也没有提到您是否尝试过其他浏览器和版本。它实际上可能是浏览器的一个bug/安全特性/特性。如果是这样的话,您可以通过AJAX发送表单来解决这个问题。在功能上,这并没有什么不同,您甚至可以在一个成功的响应之后重定向页面,以使其行为相同。但是,使用AJAX,您可以显式地控制post URL,而无需更改操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7680236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档