【问题标题】:move value from one html form to another, so one form submits values from itself and another form将值从一个 html 表单移动到另一个表单,因此一个表单从自身和另一个表单提交值
【发布时间】:2013-08-18 06:59:00
【问题描述】:

我有 2 个 html 表单,formA 和 formB。我想在提交 B 时同时提交 A 和 B 的值。这是我尝试过的代码:

<script>
function combine()
{
formB=document.getElementById('formB').elements;
formA=document.getElementById('formA').elements;
formB[2]=formA[0];
return true;
}
</script>

<form name=A id=formA>
mydrink: <input type=text value=beer name=mydrink><br>
</form>

<br>

<form name=B id=formB action=forms.html method=get>
bar: <input type=text name=bar value=doogans><br>
<input type=submit onclick="return combine();" value=okie>
</form>

我想要的行为是,当提交表单 B 时,它会发布 bar 和 mydrink 的值,因此生成的 url 是

forms.html?bar=doogans&mydrink=beer

但我只是得到

forms.html?bar=doogans

代码看起来应该可以工作,但显然不行。你知道我做错了什么或忘记做什么吗?谢谢!

【问题讨论】:

    标签: javascript html forms dom


    【解决方案1】:

    如果您正在探索jQuery,以下是提交formB 时如何拉取所有formA 元素的方法。

    HTML

    <form name=A id=formA>
        mydrink: <input type=text value=beer name=mydrink /><br />
    </form>
    <br />
    <form name=B id=formB action=forms.html method=get>
        bar: <input type=text name=bar value=doogans /><br />
        <input type=submit value=okie />
    </form>
    

    jQuery

    $(function() {
        $( '#formB input[type = "submit"]' ).on( 'click', function( e ) {
            $.each( $( '#formA' ).prop( 'elements' ), function( idx, elem ) {
                $( '#formB' ).append( $( '<input />' ).attr({
                    type : "hidden",
                    name : elem.name,
                    value : elem.value
                }));
            });
        });
    });
    

    工作演示:JsFiddle.net (悬停在 iframe 的工具栏上可查看提交后的查询参数)

    【讨论】:

    • 我对附加元素有半点想法,但有时它们没有输入元素的最新值。使用 prop 解决了这个问题。完美的解决方案,谢谢。
    • @SethCohen 很高兴为您提供帮助。对该问题 +1。
    【解决方案2】:

    我会推荐两件事。

    1. 将表单组合成一个表单(表单标签并不会真正影响样式,除非您将依赖的 CSS 放在其上,在这种情况下您应该可以将其替换为 div)
    2. 编写您自己的提交处理程序(jQuery 非常适合)。基本上只是不使用表单,而是使用 JS/jQuery 为按钮编写一个单击处理程序,该处理程序从输入中提取值并提交它们。

    如果您不确定如何执行此操作,如果您发布所有代码,我可以告诉您。

    编辑:

    这是使用 jQuery 完成的,因此请确保在标题中包含 jQuery 源文件。 我将使用带有 ID 标签 id1、id2、id3 的输入和带有 ID 标签 submit_button 的按钮作为示例。

    $(document).ready( function() {
        $("#submit_button").click( function() {
            var val1 = $("#id1").val();
            var val2 = $("#id2").val();
            var val3 = $("#id3").val();
    
            var http_str = jQuery.param({ var1: val1, var2: val2, var3: val3});
    
            window.location = "myscript.php?" + http_str;
        }
    
    });
    

    相关文档: http://api.jquery.com/jQuery.param/

    【讨论】:

    • 1.我无法合并表格。我发布的示例是为了简单起见。表单是由 php 在页面的不同部分生成的。 2. 怎么做?听起来不错!
    • 也使用类似序列化的东西是不行的,因为我想提交帖子没有得到。
    • 另外,您仍然可以组合表单。只需让第一个 php 生成器只输出开始标记,第二个 php 生成器输出结束标记。
    • 无法合并。开口必须在下面生成。您的代码可以作为帖子提交吗?
    • 如果你想发帖,写一个隐藏的表单并用jQuery分配的变量提交会更容易。
    猜你喜欢
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 2021-03-09
    • 1970-01-01
    相关资源
    最近更新 更多