2016-05-23 4 views
0

私の問題は、アラートが先行していなければ起動しないJquery UIダイアログがあることです。アラートが先行しないとMy Jquery UIダイアログが起動しない

私のページの先頭に私のダイアログのためのdiv:

<div id="dialog-confirm" title="Modification de la date de fin du projet"> 
    <p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>Keep or change ?</p> 
</div> 

ダイアログを発射イベント:

nameInput.addEventListener("keydown", function() { 
    if (event.which == 13 || event.which == 10) 
    { 
     alert("ok"); 
     $("#dialog-confirm").dialog("open"); 
    } 
    }); 

私のjQuery UIのダイアログ:

$(function() { 
    $("#dialog-confirm").dialog({ 
     autoOpen: false, 
     resizable: true, 
     height:190, 
     width:450, 
     modal: true, 
     buttons: { 
     "Keep": function() { 

      keep(); 

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

      change(); 

      $(this).dialog("close"); 
     } 
     } 
    }); 

I (例えば、document.readyを使用するなどのように)多くの異なる方法を検索して試しましたが、そのトリックは行いませんでした。

+0

をこの '$(関数(){'準備文書であり、https://api.jquery.com/ready/ –

答えて

0

私は自分の問題を解決します。 私は後event.preventDefault();を追加したしないので、それがあった:

if (event.which == 13 || event.which == 10) { ... } 

を、だけなので、ユーザーのタイプは、(キー13及び10は、入力ボタンのためのものである)彼のキーボードで入力した場合に開き、ダイアログユーザーがEnterキーを押してダイアログの最初のボタンにフォーカスがあるので、Enterキーが最初のボタンをトリガーし、ダイアログが最初のボタンコードの実行後に閉じるように、ダイアログがすぐに閉じます。

0

イベントオブジェクトをnameInputのイベントハンドラに渡すのを忘れたようです。アラートコールはそれとは関係ありません。

それは次のようになります。私は同様の問題を抱えていたし、遅延を追加

nameInput.addEventListener("keydown", function(event) { // forgot event param here 
    if (event.which == 13 || event.which == 10) 
     { 
      // alert("ok"); 
      $("#dialog-confirm").dialog("open"); 
     } 
}); 
+0

イベントのparamが推測されるので、私はそれを追加する必要はありません。 –

+0

@testaabalezイベントのパラメータを推測する場所はどこですか? – frncsdrk

0

。試してみてください:

$("#dialog-confirm").delay(2000).dialog("open"); 
+0

「遅延を追加する必要があります」というメッセージが頻繁に表示される場合は、別の場所で変更が必要な場合や不適切な処理がある場合があります。 –

+0

私の場合は、サーバーから得たものを表示するのを待たなければなりませんでした。 –

+0

その後、そのイベント内で約束と表示を考慮する必要があります。 –

関連する問題