如何将JavaScript变量添加到表单操作

3

我需要在操作表单的链接中添加一个JavaScript变量。这是否可能?

JavaScript函数:

<script>
    function parameter()
    {
        function getUrlVars() {
            var vars = {};
            var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (m, key, value) {
                vars[key] = value;
            });
            return vars;
        }
        var vpid = getUrlVars()["pid"];
    }
    //var link = "second_02.html" + pid.toString();
</script>

在我的表单中,我需要将变量'link'添加到表单操作中,如下所示:
<form action='second_02.html + ?pid=vpid&' id="sky-form" class="sky-form">
1个回答

8
你需要通过JavaScript以编程方式完成这项任务。
在这行代码之后...
var vpid = getUrlVars()["pid"];

添加这个...

document.getElementById('sky-form').action = 'second_02.html?pid=' + vpid;

考虑到vpid内容的性质,您可以在窗口的加载事件中实现它。

备选方法1

这是另一种实现您所需功能的方法,但需要您使用计算出的参数设置新位置。您可以修改尝试从文本框获取文本的行,以添加到您的URL中所需的任何内容。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <script>
            function validateForm() {
                //alert('Validating form...');
                var text = document.getElementById('txtValue').value;
                text = escape(text);
                location.href = 'test.html?param=' + text;
                return false;
            }
        </script>
    </head>
    <body>
        <form id="frmTest" method="get" action="" onsubmit="return validateForm();">
            <input id="txtValue" type="text" value="foobar">
            <input id="btnSubmit" type="submit" value="Submit">
        </form>
    </body>
</html>

备选方法2

这种方法允许您继续使用GET方法的表单,但您需要设置一个隐藏字段的值,该值将在提交期间附加到查询字符串中的URL中。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <script>
            function validateForm() {
                //alert('Validating form...');
                document.getElementById('hidTest').value = 'some calculated value';
                return true;
            }
        </script>
    </head>
    <body>
        <form id="frmTest" method="get" action="" onsubmit="return validateForm();">
            <input id="txtValue" type="text" value="foobar">
            <input id="btnSubmit" type="submit" value="Submit">
            <input name="hidTest" id="hidTest" type="hidden" value="testIt">
        </form>
    </body>
</html>

我不确定我是否做错了什么,我有这个<button type="submit" class="btn-u">搜索</button>,它是执行表单操作的负责按钮,我尝试过了,但它没有起作用。 - Lanshore
你是否已经在窗口加载时实现了JavaScript?在提交表单之前,您需要确保此操作运行,可以在文档加载时或在提交表单之前执行。您可以向表单添加onsubmit处理程序,在提交之前设置操作。 - ManoDestra
我在这里假设您正在使用POST方法来处理表单?如果不是,那么您将无法执行此操作,因为任何表单变量都将在提交期间附加到查询字符串中。您必须手动更改location.href以获取所需的新值,而不是通过表单进行更改。或者,如果您确实需要表单,请附加表单值。 - ManoDestra
更新了我的答案,以说明另一种方法。您只能将查询字符串参数设置为POST方法的一部分。如果使用GET,则查询字符串将作为表单提交的一部分计算。因此,您只需要重定向到新形成的URL即可。如果您需要将额外的表单字段附加到此查询字符串中,则可以自行确定并将它们添加到形成的URL的更多参数中。 - ManoDestra
添加了第二种备选方法,允许您继续使用GET表单提交,但是将一个隐藏字段设置为计算出的值。 - ManoDestra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接