Javascript 使用onclick将变量传递到表单

Javascript 使用onclick将变量传递到表单,javascript,forms,onclick,Javascript,Forms,Onclick,我是javascript新手,尝试从简单的开始。是否可以创建一个包含表单对象的函数,该表单对象可以由onclick事件填充 现在我有一个有7个按钮的页面,每个按钮都是一个单独表单的提交,它们都链接到我网站背面处理它们的同一个php文件。我想以某种方式创建一个表单,可能是一个javascript函数,在单击时接受按钮中的变量,然后将表单提交给我的php脚本。从技术上讲,它的功能与现在一样,有7种不同的形式,每个按钮一个,但希望能减少代码 这个例子只是我从逻辑上认为它可能是如何工作的,从几周的时间里

我是javascript新手,尝试从简单的开始。是否可以创建一个包含表单对象的函数,该表单对象可以由onclick事件填充

现在我有一个有7个按钮的页面,每个按钮都是一个单独表单的提交,它们都链接到我网站背面处理它们的同一个php文件。我想以某种方式创建一个表单,可能是一个javascript函数,在单击时接受按钮中的变量,然后将表单提交给我的php脚本。从技术上讲,它的功能与现在一样,有7种不同的形式,每个按钮一个,但希望能减少代码

这个例子只是我从逻辑上认为它可能是如何工作的,从几周的时间里,我在互联网上搜索,从这里和那里收集信息,但事实上,它远没有发挥作用

例如:

<script type="text/javascript">

function form_variables(opt1,opt2,opt3){

   <form name='mySelectionForm' action='form.php?action=form_action' method='post' enctype='multipart/form-data'>
    <input type='hidden' name='number' value='" + opt1 + "' />
    <input type='hidden' name='id' value='" + opt2 + "' />
    <input type='hidden' name='option' value='" + opt3 + "' id='options' />

    </form>;

  formObject.submit();
}

函数形式_变量(opt1、opt2、opt3){
;
formObject.submit();
}
然后,这将由类似这样的onclick事件填充

<a href="javascript: void(0);" onclick="form_variables('9','1','6');" title="submit_button1" value="Button 1" class="cssButton">My Selection</a>

只需将每个链接如下:

<a href="form.php?action=forum_action&id={ID}" class="cssButton">My Selection</a>
function postForm(number, id, option, action) {
    var form = document.getElementById('mySelectionForm');
    form.setAttribute('action', 'form.php?action=' + action);
    document.getElementById('number').value = number;
    document.getElementById('id').value = id;
    document.getElementById('option').value = option;
    form.submit();
}

用数字替换{ID}

然后在PHP文件中,使用:

<?php
switch($_GET['id']) {
    case 1:
        $var['number'] = 9;
        $var['id'] = 1;
        $var['option'] = 6;
        break;
    ...
}
?>


每种情况都是如此。这是一个更好的系统,因为它可以使您的HTML保持整洁,并且不再需要JavaScript。

不确定我是否完全理解您的意图。我认为,与其制作表单并在每次单击某个按钮时提交表单,不如使用以下方法:

<script type="text/javascript">
    function form_variables(opt1,opt2,opt3){
        window.location('form.php?action=form_action&number='+opt1+'&id='+opt2+'&option='+opt3);
    }
</script>

函数形式_变量(opt1、opt2、opt3){
window.location('form.php?action=form_action&number='+opt1+'&id='+opt2+'&option='+opt3);
}

你的思路是对的。JavaScript可以填充隐藏输入的值并更改表单的操作,而不是每次动态生成表单。因此,在您的HTML中:

<form name="mySelectionForm" id="mySelectionForm" action="form.php?action=form_action" method="post" enctype="multipart/form-data">
  <input type="hidden" name="number" value="" id="number" />
  <input type="hidden" name="id" value="" id="id" />
  <input type="hidden" name="option" value="" id="options" />
</form>

如果我理解正确,您有7个表单和7个按钮,并且希望使用脚本,以便在提交其中一个表单时,将值复制到另一个表单,然后提交该表单。我不认为这会“减少代码”

在我看来,这似乎增加了代码量——表单根本不需要任何脚本。您可以只使用一个带有7个提交按钮的表单,然后根据单击的按钮在服务器上进行排序

编辑 如果使用具有多个提交按钮的单个表单,如:

<form action="form.php?action=form_action">
  <input name="foo" value="bar">
  <input type="submit" value="Submit 1" name="Submit 1">
  <input type="submit" value="Submit 2" name="Submit 2">
</form>
单击第二个按钮时,将获得:

...?foo=bar&Submit+1=Submit+1
...?foo=bar&Submit+2=Submit+2
所以:一个表单,多个提交按钮,没有脚本,服务器知道点击了哪个


当然,您可能希望使用脚本来增强UI,但底层功能不需要脚本。

我不建议这样做。像表单帖子这样的东西不应该被HTTP
GET
操作所取代。为什么不呢?更改表单值和更改GET变量一样容易。如果页面上有一堆链接,爬虫会跟随这些链接并产生副作用。你不应该引入导致副作用的
GET
操作。什么是“副作用”?来宾用户不应该造成任何负面的副作用。我知道一个人试图起诉一家搜索引擎,因为他们的机器人跟踪了该人在其网站上的所有“删除”链接,但除此之外…
GET
s也可以缓存,破坏了使用它们触发操作的实用性。使用
GET
获取,使用
POST
发布。为什么要使用链接作为按钮?只需使用一个按钮。正如我最初的帖子所说,我只是在学习,我仍然在学习基础知识,并试图在网络阅读的基础上做到这一点。我想做的是有7个按钮,将变量发布到一个表单,然后自动提交。这样我就不会有七种不同的形式。它们都发布到同一个php文件中,然后处理数据。我不确定我是否需要变量操作,因为我总是将数据发布到同一个文件中。我的onclick事件还会以同样的方式使用吗?是的,如果您不需要将操作变为变量,那就很好了。这完成了我试图做的,一个简洁的解决方案。我也一直在尝试附加这个。我的两个原始表单有第四个变量,它是从带有7个选项的下拉列表中选择的。我一直在尝试使用document.getElementId('droplist').value=option将第四个变量添加到表单中;但它不起作用。我想我遗漏了一个部分,也许我需要选择下拉列表,然后用另一个命令获取它的值?更复杂的是,我可能需要一个参数,如果没有droplist,那么第四个值将变为null,并且没有提交?