如何通过 JavaScript 设置表单操作?

IT技术 javascript html forms
2021-01-27 06:52:02

我有一个 HTML 表单,它的操作应该通过 JavaScript 动态设置。我该怎么做?

这是我想要实现的目标:

<script type="text/javascript">
    function get_action() { // Inside script tags
        return form_action;
    }
</script>

<form action=get_action()>
    ...
</form>
6个回答

您不能在标准 HTML 属性中调用 JavaScript 函数,而不是onXXX. 只需在窗口加载期间分配它。

<script type="text/javascript">
    window.onload = function() {
        document.myform.action = get_action();
    }

    function get_action() {
        return form_action;
    }
</script>

<form name="myform">
    ...
</form>

您会看到我已经给出了表单 a name,以便在document.

或者,您也可以在submit活动期间进行

<script type="text/javascript">
    function get_action(form) {
        form.action = form_action;
    }
</script>

<form onsubmit="get_action(this);">
    ...
</form>
@Rabbott:它是 HTML,而不是 XML。XHTML 只对服务器端 HTML 自动生成器感兴趣,比如基于组件的 MVC 框架。
2021-03-29 06:52:02
尽管根据标记这可能无法验证,“名称”属性在 XML 中不是有效属性,但最好使用 ID 并使用 getElementById
2021-03-30 06:52:02

纯 JavaScript:

document.getElementById('form_id').action; //Will retrieve it

document.getElementById('form_id').action = "script.php"; //Will set it

使用jQuery...

$("#form_id").attr("action"); //Will retrieve it

$("#form_id").attr("action", "/script.php"); //Will set it
这是一个不错的选择,我使用了普通 Javascript 选项。我在桌面视图中工作。但不能在移动浏览器上使用
2021-03-29 06:52:02
嗨,我认为对于普通的 JavaScript 第 2 行: document.getElementById('form_id').action = "script.php" 将检索它 <-- 这将设置它。
2021-04-04 06:52:02

使用 jQuery 非常简单的解决方案:

$('#myFormId').attr('action', 'myNewActionTarget.html');

您的表格:

<form action=get_action() id="myFormId">
...
</form>

实际上,当我们想要这个时,我们想根据我们按下的提交按钮来改变动作。

在这里,您甚至不需要分配name分配id给表单。只需使用被form点击元素属性:

<form action = "/default/page" >
    <input type=submit onclick='this.form.action="/this/page";' value="Save">
    <input type=submit onclick='this.form.action="/that/page";' value="Cancel">
</form>
document.forms[0].action="http://..."

...假设它是页面上的第一个表单。

您可以在onsubmit事件处理程序中编写它以确保它总是在提交之前获得。但是,通常尝试从脚本更改表单操作是一种代码异味;除非你不控制服务器端,通常最好让表单接受两种+不同的提交模式。
2021-03-18 06:52:02
这可能会起作用,但我仍在尝试通过从函数中获取操作字符串来使其起作用。没有办法这样做吗?
2021-04-09 06:52:02