5

私のプロジェクトのスニペットを含めます。ウィンドウのダイアログで [追加] をクリックしてこのコードを実行すると、送信内で Firebug がエラーを返します。

なぜこれができないのか知りたい alert ("Se funziona questo mi hai aiutato");

http://api.jquery.com/submit/

サイトの最後に例があり、私の PC では問題なく動作します。

ここで、ウィンドウのダイアログ (Jquery) 内でフォームを使用するコードまたは演習を公開します。

プログラムしたいのですが、解決策はありますが、関数の JavaScript 内のスクリプトが機能しません。

なんで?

今、私は私のプロジェクトについて話します。

ダイアログのウィンドウ (Jquery my code) を使用して何かを追加します。

プロジェクトは機能しません。(Firebugコンソールを使用して)ダイアログを追加するボタンを押した後too much recursion、ライブラリでこのエラーが発生するためです。jquery.min.js line 2

アラートを実行するようにコードを改善するにはどうすればよいですか?

私のプロジェクト:

<html>
  <head>
    <title></title>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <style></style>
  </head>
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js"></script>
 <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript">
// <---- VENTAÑAS DE PARAMETERES---->
$(document).ready(function() { 
var regex,v,l,c,b,i,contapara=3;
$( "#wnd_Addparam" ).dialog({
            autoOpen: false,
            height: 'auto',
            width: 350,
            modal: true,
            resizable:false,
            buttons: {
                "Add": function() {
                                 contapara=(parseInt(contapara)+1);
alert("popopo");
                $("#formparam").submit(function() {
                              alert("Se funziona questo mi hai aiutato");
                    });
                                $( this ).dialog( "close" ); 
                                   },
                Cancel: function() {
                    $( this ).dialog( "close" );
                }
            },
            close: function() {
                $( this ).dialog( "close" );
            }
        });

        $( "#btn_Addpar" ).click(function() {
                        i=(parseInt(contapara)+1);
                        $("#formparam").remove();
    $("#wnd_Addparam").append('<form method="GET" name="formparam"  id="formparam" action="${nextstep}"><table><tr><td><label>ID</label></td><td>\
    <textarea class="expand" name="inputp'+i+'_id" id="inputp'+i+'_id"></textarea></td></tr>\
    <tr><td><label>Type</label></td><td><select name="inputp'+i+'_type" id="inputp'+i+'_type">\
    <option value="text">Text</option><option value="integer">Integer</option><option value="float">Float</option>\
    <option value="list_values">List of values</option><option value="range">Range</option>\
    <option value="selection_collapsed">Selection (collapsed)</option>\
    <option value="selection_expanded">Selection (expanded)</option>\
    <option value="subimage">Subimage selection</option>\
    <option value="polygon">Polygon selection</option>\
    <option value="horizontal_separator">Horizontal separator</option>\
    </select></td></tr></table></form>');



                $( "#wnd_Addparam" ).dialog( "open" );
            });
});
</script>
  <body>
<div>
 <input type="button" id="btn_Addpar" value="Add"/>
<input type="button" id="btn_Deletepara" value="Delete"/>
<input type="button" id="btn_Pedit" value="Edit"/>
</div>
<div id="wnd_Addparam" title="New parameter" ></div>
</body>
</html>

この質問も見ましたJQueryを使用してGETフォームを送信するときにクエリ文字列を変更するにはどうすればよいですか? そして彼は(常に関数の送信内で)このスクリプトを使用しました:

   function(event) {
            event.preventDefault();
            $this = $(this);
            alert("Se funziona questo mi hai aiutato");
}

しかし、それも機能しません。

4

2 に答える 2

3

jsFiddle を変更していくつかのことを機能させましたが、おそらくまだあなたが望んでいる方法ではないでしょう:

jsFiddle .

jQuery と jQuery-ui を jsFiddle に追加してコンパイルできるようにし、フォーム送信コードを配置する場所にアラート スタブを配置しました。

追加ボタンとキャンセル ボタンは jquery-ui呼び出し.submit()によって追加され、要素の一部ではないため、ハンドラーは呼び出されませんでした。.dialog(...)<form>

「追加」ボタンの関数ハンドラに ajax コードを配置すれば、準備完了です。あなたのコードのほとんどが何をしているのかはわかりませんが、これは少なくとも役立つかもしれません.

var regex,v,l,c,b,i,contapara=3;
$( "#wnd_Addparam" ).dialog({
    autoOpen: false,
    height: 'auto',
    width: 350,
    modal: true,
    resizable:false,
    buttons: {
        "Add": function() {
            contapara=(parseInt(contapara)+1);
            alert("add was clicked");
            // to use ajax uncomment below, depending on the 
            // service you're hitting, you may need
            // to change it to $.get(... etc 
            // which will use HTTP GET verb
            /*
            var $fm = $("#formparam");
            $.post($fm.attr('action'), $fm.serializeArray())
                .done(function(data, ok){
                    alert('call done: ' + ok);
                    // data is the content of the response
                })
                .fail(function(data){
                    alert('call failed');
                    // call failed for some reason -- add error messaging?
                });                            
            */
            $( this ).dialog( "close" );
        },
        Cancel: function() {
            $( this ).dialog( "close" );
        }
    }
});

$( "#btn_Addpar" ).click(function() {
                i=(parseInt(contapara)+1);
                $("#formparam").remove();
            $("#wnd_Addparam").append('<form method="GET" name="formparam"  id="formparam" action="${nextstep}"><table><tr><td><label>ID</label></td><td>\
            <textarea class="expand" name="inputp'+i+'_id" id="inputp'+i+'_id"></textarea></td></tr>\
            <tr><td><label>Type</label></td><td><select name="inputp'+i+'_type" id="inputp'+i+'_type">\
            <option value="text">Text</option><option value="integer">Integer</option><option value="float">Float</option>\
            <option value="list_values">List of values</option><option value="range">Range</option>\
            <option value="selection_collapsed">Selection (collapsed)</option>\
            <option value="selection_expanded">Selectionddddd (expanded)</option>\
            <option value="subimage">Subimage selectiondddddd</option>\
            <option value="polygon">Polygon selectionddd</option>\
            <option value="horizontal_separator">Horizontal separator</option>\
            </select></td></tr></table></form>');


        $( "#wnd_Addparam" ).dialog( "open" );
    }); ​
于 2012-12-12T18:57:43.350 に答える
-1

次の行が原因で、「再帰が多すぎます」というエラーが発生します。

close: function () {
    $(this).dialog("close");
}

ここで言っているのは、ダイアログを閉じるときにダイアログを閉じる必要があるということです。これにより、このハンドラーが無限ループで起動します。この行をコメントアウトするか、完全に削除してください。

于 2012-12-07T17:37:41.330 に答える