2016-05-23 65 views
0

我的問題是我有一個Jquery UI對話框,如果沒有警告,它就不會觸發。我的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用戶界面對話框:

$(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"); 
     } 
     } 
    }); 

我搜索和嘗試了許多不同的方式(如使用document.ready例如等),但它並沒有做到這一點。

+0

這'$(函數(){'是Document準備,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

的事件參數推斷,所以我不必添加。 –

+0

@testaabalez只是爲了讓我清楚,你從哪裏推斷出事件參數? – frncsdrk

0

我也有類似的問題,並增加了延遲。嘗試:

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

當你遇到「我不得不延長時間」的時候,通常意味着需要在其他地方改變某些東西,或者你不恰當地處理某些事情。 –

+0

I也不喜歡它,但我必須得到它的工作。在我的情況下,我不得不等待顯示我從服務器上得到的東西。 –

+0

然後你應該考慮在該事件中的承諾和顯示。 –