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

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

【问题讨论】:

    标签: html forms submit action


    【解决方案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>

        【讨论】:

        • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多