如何使用 JavaScript 更改表单操作

IT技术 javascript html forms
2021-01-23 02:40:10

我目前的代码如下:

<div class="fr_search">   
  <form action="/"  accept-charset="UTF-8" method="post" id="search-theme-form">
  .......
  </form>
</div>

现在我想编写一个函数来在满足条件时更改表单操作和方法。我该如何编写这段代码?

例如,

function test() {
   if (selectedIndex === 1)....
} // How do I write this code?
4个回答
function chgAction( action_name )
{
    if( action_name=="aaa" ) {
        document.search-theme-form.action = "/AAA";
    }
    else if( action_name=="bbb" ) {
        document.search-theme-form.action = "/BBB";
    }
    else if( action_name=="ccc" ) {
        document.search-theme-form.action = "/CCC";
    }
}

name在这种情况下,您的表单需要具有

<form action="/"  accept-charset="UTF-8" method="post" name="search-theme-form" id="search-theme-form">
我想你的意思是document['search-theme-form']document.search-theme-form实际上并没有用。
2021-03-16 02:40:10
您可能需要定义不带连字符的表单名称
2021-04-06 02:40:10
document.forms.search-theme-form.action 是工作
2021-04-14 02:40:10

试试这个:

var frm = document.getElementById('search-theme-form') || null;
if(frm) {
   frm.action = 'whatever_you_need.ext' 
}

如果您使用的是 jQuery,它就像这样简单:

$('form').attr('action', 'myNewActionTarget.html');
请记住,这将更改页面上的所有表单。
2021-03-15 02:40:10
如果我想使用jquery,如何编写不改变其他形式的代码。
2021-03-16 02:40:10
@enjoylife $('#myFormId').attr('action', 'myNewActionTarget.html');
2021-03-31 02:40:10

我想使用 JavaScript 来更改表单的操作,因此我可以在链接到不同页面的同一表单中使用不同的提交输入。

我还增加了使用 Apache 重写更改example.com/page-nameexample.com/index.pl?page=page-name. 我发现更改表单的操作会导致example.com/index.pl(没有页面参数)呈现,即使example.com/page-name地址栏中显示了预期的 URL ( )。

为了解决这个问题,我使用 JavaScript 插入一个隐藏字段来设置页面参数。我仍然更改了表单的操作,以便地址栏显示正确的 URL。

function setAction (element, page)
{
  if(checkCondition(page))
  {
    /* Insert a hidden input into the form to set the page as a parameter.
     */
    var input = document.createElement("input");
    input.setAttribute("type","hidden");
    input.setAttribute("name","page");
    input.setAttribute("value",page);
    element.form.appendChild(input);

    /* Change the form's action. This doesn't chage which page is displayed,
     * it just make the URL look right.
     */
    element.form.action = '/' + page;
    element.form.submit();
  }
}

在形式:

<input type="submit" onclick='setAction(this,"my-page")' value="Click Me!" />

这是我的 Apache 重写规则:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule ^/(.*)$ %{DOCUMENT_ROOT}/index.pl?page=$1&%{QUERY_STRING}

我对任何关于为什么设置操作不起作用的解释感兴趣。