0

「url」という変数を2番目の関数に渡そうとしている2つの関数があります。

最初の関数は、データベースから吐き出される「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>

変数がそこにあることを確認しました。

2番目の関数は、この変数をキャプチャして、フォームデータの送信とともに返すことになっています。

これが2番目の関数です。

 <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>

私はこれを数日間理解しようとしてきましたが、どうしたらよいかわかりません。関数内から1つの関数を呼び出すか、何らかの方法で変数を両方の関数に対してグローバルにすることを考えています。

あなたが提供できるどんな助けにも感謝します、それは大いに感謝されます、そして私は良い夜の睡眠を使うことができました:)

4

2 に答える 2

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 に答える
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 に答える