提交时设置表单的动作属性?

Posted

技术标签:

【中文标题】提交时设置表单的动作属性?【英文标题】:Set a form's action attribute when submitting? 【发布时间】:2011-08-04 04:44:39 【问题描述】:

如何在单击提交按钮后立即更改表单的操作属性?

【问题讨论】:

【参考方案1】:
<input type='submit' value='Submit' onclick='this.form.action="somethingelse";' />

或者您可以从表单外部修改它,使用 javascript 正常方式:

 document.getElementById('form_id').action = 'somethingelse';

【讨论】:

这是一个简洁的好例子。请注意,如果您在提交表单时进行了验证,并且如果在单击此按钮后验证失败,则单击其他提交按钮仍可能调用新设置的操作。 有没有办法可以在表单中将表单操作设置为等于选项选择?【参考方案2】:

如果您只需要支持现代浏览器,有一个简单的方法可以做到这一点:在您的提交按钮上,添加一个 formaction="/alternate/submit/url" 属性,如下所示:

<form>
    [fields]
    <input type="submit" value="Submit to a" formaction="/submit/a">
    <input type="submit" value="submit to b" formaction="/submit/b">
</form>

它也适用于&lt;button&gt; 标签。

问题是旧版本的 IE (

更多信息:http://www.wufoo.com/html5/attributes/13-formaction.html

【讨论】:

谢谢,工作完美,支持足够广泛。【参考方案3】:

您还可以在表单标签中设置onSubmit 属性的值。您可以使用 Javascript 设置其值。

类似这样的:

<form id="whatever" name="whatever" onSubmit="return xyz();">
    Here is your entire form
    <input type="submit">
</form>;

<script type=text/javascript>
function xyz() 
  document.getElementById('whatever').action = 'whatever you want'

</script>

请记住onSubmit 的优先级高于操作属性。因此,每当您指定 onSubmit 值时,将首先执行该操作,然后表单将执行操作。

【讨论】:

非常感谢使用更合适的提交事件,而不是点击。 这应该是最佳答案。我通常通过点击&lt;enter&gt; 提交表单,而不是点击任何地方。 为什么要这样使用onSubmit="return xyz();"。我们不能只有onSubmit="xyz()" 吗? 我完全为了更高的优先级!仅此一项就拯救了我的……咳咳,皮肤!【参考方案4】:

附加到提交按钮click 事件并更改事件处理程序中的action 属性。

【讨论】:

@dave - 您能否解释一下为什么在提交之前 不能将action 属性设置为所需的值? 这就是我要弄清楚的问题。 @dave - 我的意思是在渲染 HTML 时。如果没有看到您的代码,我认为无法提供更多帮助。【参考方案5】:

你可以在 javascript 端做到这一点。

<input type="submit" value="Send It!" onClick="return ActionDeterminator();">

单击时,JavaScript 函数 ActionDeterminator() 确定备用操作 URL。示例代码。

function ActionDeterminator() 
  if(document.myform.reason[0].checked == true) 
    document.myform.action = 'http://google.com';
  
  if(document.myform.reason[1].checked == true) 
    document.myform.action = 'http://microsoft.com';
    document.myform.method = 'get';
  
  if(document.myform.reason[2].checked == true) 
    document.myform.action = 'http://yahoo.com';
  
  return true;

【讨论】:

【参考方案6】:

HTML5 的 formaction 不适用于旧的 IE 浏览器。根据上面的一些回复,一个简单的解决方法是:

<button onclick="this.form.action='/PropertiesList';" 
    Account Details </button>

【讨论】:

【参考方案7】:

你可以试试这个:

<form action="/home">
  
  <input type="submit" value="cancel">
  
  <input type="submit" value="login" formaction="/login">
  <input type="submit" value="signup" formaction="/signup">
  
</form>

【讨论】:

虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。

以上是关于提交时设置表单的动作属性?的主要内容,如果未能解决你的问题,请参考以下文章

XHTML 表单

设置 zend 框架动作控制器

仅设置表单提交时输入的字段的主干模型属性

radioselectcheckbox 设置readonly和disabled属性from提交的时候出现的问题

在 iFrame jQuery 中重定向表单提交时未检测到更新的 Src 属性

html中,表单里的name属性是用来干嘛的