【问题标题】:pass form value into src url of iframe with jquery使用 jquery 将表单值传递到 iframe 的 src url
【发布时间】:2011-08-26 15:18:58
【问题描述】:

我一直在让自己发疯,试图做看似如此简单的事情。我有一个表格,我问邮政编码。输入邮政编码后,我正在使用 colorbox 弹出带有 iframe 的灯箱。我需要将表单中的邮政编码值传递到 iframe 的源 URL。我的表单代码如下所示:

<div class="form-zip-start">
    <p>Enter your zip code to begin your search:</p>
    <form id="submit" action="#" name="submit" method="post">
        <input name="zip" id="zip" type="text" value="" class="zip-start" />               
        <div class="form-submit"><a href="/form.htm" rel="zipformSubmit" class="zipformSubmit">Submit</a></div>
    </form>
</div>

我的 js 代码如下所示:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script src="/ppc/colorbox/colorbox/jquery.colorbox.js"></script>
<script>
    $(document).ready(function(){
        $("a[rel=zipformSubmit]").click(function() { $("form#submit").submit(function(e) { 
        var zip = $('#zip').attr('value');  
        colorbox({href: "?zip=" + zip, iframe:true, innerWidth:800, innerHeight:600});
    });
    });
    });
</script>

最终结果应该是加载的 iframe,如...src="/form.htm?zip=92108"

92108 值应该来自名为“zip”的表单输入

我似乎无法正确传递邮政编码值。无论如何可以告诉我我做错了什么吗?

谢谢!

【问题讨论】:

    标签: jquery colorbox


    【解决方案1】:

    您需要使用 preventDefault() 来阻止浏览器简单地跟踪链接,并且您将您的操作放在表单的提交事件中,但是您没有提交按钮,并且您没有触发提交事件,因此该事件永远不会触发。在这种情况下,您不需要提交表单,因此您可以简单地利用链接点击事件,使用表单中输入的数据打开 iframe。像这样

        <script> 
            $(document).ready(function() { 
            $("a[rel=zipformSubmit]").click(function(e) { 
                e.preventDefault();
                 var zip = $('#zip').val();
    alert("about to open colorbox with zipcopde " + zip);
                $.colorbox({href: "?zip=" + zip, iframe:true, innerWidth:800, innerHeight:600}); 
            }); 
            });  </script> 
    

    注意:一些验证会很好 if (zip.length &gt; 0) { }

    在评论后添加:

    为了引入您的$_GET['Source'],您应该添加一个隐藏的表单字段:

        <div class="form-zip-start">
            <p>Enter your zip code to begin your search:</p>
            <form id="submit" action="#" name="submit" method="post">
    <input type='hidden' name='source' id='source' value='<?php echo $_GET['Source']; ?>' />
                <input name="zip" id="zip" type="text" value="" class="zip-start" />               
                <div class="form-submit"><a href="/form.htm" rel="zipformSubmit" class="zipformSubmit">Submit</a></div>
            </form>
        </div>
    

    然后制作js:

    <script> 
                $(document).ready(function() { 
                $("a[rel=zipformSubmit]").click(function(e) { 
                    e.preventDefault();
                     var zip = $('#zip').val();
                     var source = $('#source').val();
        alert("about to open colorbox with zipcopde " + zip);
                    $.colorbox({href: "?source="+source+"&zip=" + zip, iframe:true, innerWidth:800, innerHeight:600}); 
                }); 
                });  </script> 
    

    【讨论】:

    • 谢谢,但是当我尝试上面的代码时,当我单击带有 rel=zipformSubmit 的链接时没有任何反应
    • 试一试,你会发现邮政编码会在警报中,这意味着问题出在你对colorbox的调用中。我尝试添加 $.这应该会有所帮助,但我对 colorbox 生疏了,因为我现在使用 fancybox
    • 我最初在我的href中以&lt;a href="/form.htm?source=&lt;?php echo $_GET['source']; ?&gt;" rel="zipformSubmit" class="zipformSubmit"&gt;Submit&lt;/a&gt;的形式包含以下内容。我怎样才能从原始 url 中提取这个源参数以及表单输入中的 zip?非常感谢您的帮助!
    • 现在加入回答,请点赞我的回答并选择正确
    • 我添加了以下隐藏字段 &lt;input type="hidden" name="source" value="blah" /&gt; 并更新了上面的 js 代码,但将警报框更改为 `alert("this is source" + source);` 并且源值为以未定义的形式返回。知道为什么这不起作用吗?
    【解决方案2】:

    试试这个,我改了

    var zip = $('#zip').attr("value");
    

    有了这个

    var zip = $('#zip').val();
    

    JS代码:

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
    <script src="/ppc/colorbox/colorbox/jquery.colorbox.js"></script>
    <script> 
        $(document).ready(function(){ 
            $("a[rel=zipformSubmit]").click(function(){ 
                $("form#submit").submit(function(e) {
                    var zip = $('#zip').val();
                    colorbox({href: "?zip=" + zip, iframe:true, innerWidth:800, innerHeight:600});
                    });
                });
            });
    </script>
    

    【讨论】:

    • 但是表单没有提交,它是通过点击链接提交的,提交事件不会触发
    猜你喜欢
    • 2017-03-02
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多