2012-07-13 57 views
0

也有類似的問題,但他們不能幫我解決這個問題。jquery UI對話框多個實例按下時輸入

當對話框打開並按下回車鍵時,我希望這相當於關閉對話框。

我寫了以下內容,但它不起作用。相反,在每次ENTER時,焦點停留在觸發對話框打開的元素上,從而產生多個實例。

感謝

var $dialogError = $('<div id="dialogError"></div>').html(vGraph.getLastErrorMsg()).dialog({ 
    autoOpen: false, 
    open: function() { 
     $("#dialogError").keydown(function(e) { 
      alert("enter"); 
      if (e.keyCode == $.ui.keyCode.ENTER) { 
       $(this).dialog("close"); 
      } 
     }); 
    }, 
    title: 'Error' 
}); 
$dialogError.dialog('open');​ 
+1

代替'$( 「#dialogError」)的的keydown(功能(E){'怎麼樣'$( 「身體」)的keydown(函數(E){'? – j08691 2012-07-13 18:58:43

回答

0

嘗試從​​處理程序返回false

 
open: function() { 
    $("#dialogError").keydown(function(e) { 
     alert("enter"); 
     if (e.keyCode == $.ui.keyCode.ENTER) { 
      $(this).dialog("close"); 
      return false; 
     } 
    }); 
}, 

2

也許將焦點設置在打開的對話框中,這樣的重點不再是對後使用$('#dialogError').focus();的dialogError元素元素打開對話框,它將捕獲回車鍵。

1
$(document).on('keypress', function(event) { 
    if (event.keyCode == $.ui.keyCode.ENTER) { 
     $('#dialogError').dialog('close');  
    } 
});​ 

這無論dialog是否具有焦點或不工作,這可能是你想要的東西。該代碼將在對話框未打開時執行,但運行$('#dialogError').dialog('close');將不會產生不利影響。

- 。http://jsfiddle.net/tj_vantoll/x32zC/1