2012-01-16 4 views
3

JavaScriptコードは、ユーザーからの情報を要求するダイアログボックスと、2つのボタン([OK]と[キャンセル])を表示します。 dialogbeforeCloseハンドラを使用して、ユーザーが[OK]ボタンをクリックしたときに入力を検証します(ユーザーが適切な入力を行わなかった場合でもダイアログボックス内にあり、それを修正してください)。私の2つのボタンのどれが押されたかを伝える方法はありますか? (ユーザーがキャンセルを押した場合は、入力確認は不要で、ダイアログボックスはただちに閉じることができます。つまり、beforeClosetrueを返すことができます)。 beforeCloseは2つの入力、すなわちeventuiを受け取っていますが、どちらにも必要な情報が含まれていないようです。(JQuery-UI)ダイアログのbeforeClose()ハンドラでどのボタンが押されたのかを検出する方法はありますか?

答えて

0

私はすべてのアプリケーションの一つ、というより、私はちょうどダイアログで、フォーム上inline validationで投げるカスタム検証の周りdinkingの上にこれらを持っています。それはあなたのための傍受を行い、簡単にフィールドを検証し、正しい場合は飛行させます。そうでない場合、自動的に通知を行います。

あなたは確かにこのソリューションを自作することができましたが、誰かがすでにあなたのために仕事をしています。より大きな問題のためにコードを保存してください。

自分で行うことに決めた場合は、マニュアルの説明に従って、ボタンの機能にアクションを加えてください。

+0

インライン検証のアイデアは考えていませんでしたし、あなたがリンクしているプラ​​グインも認識していませんでした。ありがとう! –

2

ボックスを閉じる前に他の関数をバインドするだけです(フォームが検証されない場合は、クローズしないでください)。 $(this).dialog( "close")の前に必要なチェックまたはajax呼び出しを追加してください。 :http://jqueryui.com/demos/dialog/#modal-confirmation

<script> 
    $(function() { 
     // a workaround for a flaw in the demo system (http://dev.jqueryui.com/ticket/4375), ignore! 
     $("#dialog:ui-dialog").dialog("destroy"); 

     $("#dialog-confirm").dialog({ 
      resizable: false, 
      height:140, 
      modal: true, 
      buttons: { 
       "Delete all items": function() { 
        $(this).dialog("close"); 
       }, 
       Cancel: function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 
    }); 
    </script> 
関連する問題