0

我有 2 个函数,我希望将一个名为“url”的变量传递给第二个函数。

第一个函数从“url”的值中获取一个 href 属性,因为它从我的数据库中吐出,并且是打开模式窗口的触发器。

 <a class=\"trigger3\" url=\"".$url."\" href=\"#\">

函数看起来像这样。

 <script type="text/javascript">
 $(document).ready(function(){
    $(".trigger3").click(function(){
            var url=$(this).attr("url");
            $(".panel3").toggle("fast");
            $(this).toggleClass("active");
            return false;
    });
 });
 </script>

我已经确认变量在那里。

第二个函数应该捕获这个变量并将它与提交表单数据一起返回。

这是第二个功能。

 <script type="text/javascript">
 function submitForm2() {
    $.ajax({type:'POST', url: 'flagadd.php', data:$('#flagProxy').serialize()+'&url=url', success: function(response) {
    $('#flagProxy').find('.form_result2').html(response);
}});

return false;
 } 
 </script>


 <div class="panel3">
 <form id="flagProxy" onsubmit="return submitForm2();">
 <textarea style="resize:none" name="flag" cols="25" rows="5"></textarea>
 <input type="hidden" name="url" />
 <br>
 <input type="submit" name="submit" value="Submit" />
 <input type="button" name="cancel" value="Cancel" class="trigger3" />
 <div class="form_result2"></div>
 </form>
 </div>

几天来我一直试图解决这个问题,但我不知道该怎么做。我在想要么从函数中调用一个函数,要么以某种方式使变量对这两个函数都是全局的。

感谢您提供的任何帮助,非常感谢,我可以睡个好觉:)

4

2 回答 2

1

您可以从另一个函数调用一个函数,将值作为参数传递,但如果两个函数都是事件触发的,那么我将使用全局变量来保存该值:

 <script type="text/javascript">

 var global;

 $(document).ready(function(){
    $(".trigger3").click(function(){
            var url=$(this).attr("url");
            $(".panel3").toggle("fast");
            $(this).toggleClass("active");
            global = 3;
            return false;
    });
 });

function submitForm2() {
    console.log(global); // 3
    $.ajax({type:'POST', url: 'flagadd.php', data:$('#flagProxy').serialize()+'&url=url', success: function(response) {
    $('#flagProxy').find('.form_result2').html(response);
}});

return false;
}

 </script>
于 2013-02-28T01:21:03.700 回答
1

不要只是组成 HTML 属性名称。如果您想存储数据,请使用 HTML5data-*属性——例如,data-url="..."改为。

如果您只想将其作为表单的一部分发送,为什么不在表单中添加一个隐藏字段并更新它呢?

<input type="hidden" name="url">

+

var url = $(this).data('url');  // jquery understands HTML5 data-* attributes too
$('#flagProxy input[name=url]').val(url);

更好的是,而不是链接,只需在表单内使用带有值的按钮。

<input type="submit" name="url" value="...">

(我会使用<button>,但较旧的 IE 真的很笨,不能正确处理发送其表单值。)

于 2013-02-28T01:26:05.983 回答