2012-01-03 10 views
1

オートコンプリート項目が選択された後にJquery UIモーダルダイアログボックスを引き継ぎようとしています。私はすべてが例外としてポップアップしているが、モーダルダイアログがアップした後にコードが実行されている。最後に、このダイアログをポップアップし、ボタンに基づいて反応したいと思います。選択Jquery - オートコンプリートの選択時にモーダルダイアログを使用する

オートコンプリート:コードのほとんどは、jQueryのUIからとられている

 select: function(event, ui) { 
     if(ui.item.squad != '0'){ 
      console.info('popup'); 
      var choice=null; 

      $("#dialog-confirm").dialog({ 
       resizable: false, 
       height:140, 
       modal: true, 
       buttons: { 
        Cancel: function() { 
         choice = false; 
         $(this).dialog("close"); 
        }, 
        "Move Shooter": function() { 
         choice = true; 
         $(this).dialog("close"); 

        } 
       } 
      }); 
      if(!choice){ 
       console.info($(this)); 
       $(this).text(""); 
       $(this).val(""); 
       $(this).attr("name", ""); 
       $(this).attr("value", ""); 
       console.info("false"); 
       return; 
      } 
     } 

here.

私はそれがボタンになるまでのコードの実行を停止するだろうと思ったこのコードを実行すると、 hereと表示されているように、コンソールにfalseを出力する行が表示されます。

答えて

0

ブロック全体が実行されて復帰するため、コードは機能しません。できることは、ユーザーが選択した後に実行される関数を定義することです。基本的には、ダイアログコードの下にあるifステートメントを独自の関数に移動し、この関数をボタンハンドラコードの一部として呼び出すことで、これを行います。

例:

はどこかにコールバックを定義します。

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

     handleDialogResponse(false); 
    }, 
    "Move Shooter": function() { 
     $(this).dialog("close"); 

     handleDialogResponse(true); 
    } 
} 
+0

そして、あなたの私のヒーロー:

function handleDialogResponse(choice) { if(!choice){ console.info($(this)); $(this).text(""); $(this).val(""); $(this).attr("name", ""); $(this).attr("value", ""); console.info("false"); } } 

次に、このような何かにあなたのダイアログのボタンのコードを変更します。助けてくれてありがとう –

関連する問題