2012-07-30 46 views
1

我試圖創建一個非常簡單的模態對話框,只顯示一個textarea。jQuery BlockUI:用戶點擊「輸入」鍵後可以運行一個函數嗎?

目標:

  • 如果用戶點擊「ESC」鍵,它會消失(和文字輸入被忽略)
  • 如果用戶輸入文本並點擊了「確認」鍵,運行輸入的函數(稱爲「postText(userinput)」)

我在想我是否可以使用jQuery BlockUI:http://malsup.com/jquery/block/#demos

但是,我不確定如何實際關閉基於esc的對話框,或者如果用戶點擊輸入運行函數。

任何幫助將不勝感激!

回答

4

ESC關閉對話框,只需添加一個keyup偵聽器document並調用$.unblockUI如果鍵碼等於27

​​$(document).on('keyup', ​​​function(e) { 
    if (e.which === 27) { // Escape key 
    $.unblockUI(); 
    } 
});​ 

對於表格,只需添加一個事件偵聽器輸入字段在對話框中。它基本上是一樣的。

​​$('#the-input').on('keyup', ​​​function(e) { 
    if (e.which === 13) { // Enter key 
    // AJAX maybe? 
    $.post('your/url', { data: $(this).val() }, function(response) { 
     $.unblockUI();    
    }); 
    } 
});​ 

編輯

您的DOM加載後分配這些聽衆。所以,你的加載腳本文件將包含:

$(document).ready(function() { 
    // Code from the two listings above here 

    // Trigger blockUI by click on an link for example 
    $('a').on('click', function(e) { 
     e.preventDefault(); 

     $.blockUI({ message: $('#your-form') }); 
    }); 
}); 
+0

謝謝!對不起,如果這是一個愚蠢的問題,但#輸入和#你的形式之間有什麼區別。我有一個ID與你的形式與輸入字段的div。 #輸入的目的是什麼? – tonic 2012-07-30 18:08:14

+0

'#輸入'應該是分配給您的文本輸入字段的編號,您希望在輸入時發送該字段。 '#your-form'應該是分配給你的'

'元素的id。將'$('#your-form')'傳遞給blockUI應該在模態中顯示整個表單。 – mAu 2012-07-31 13:08:06

+0

有道理,謝謝! – tonic 2012-08-03 12:48:21

1

的javascript:

("#yourInput").keyup(function(e){ 
    switch (e.keyCode) { 
    case 13: # enter 
    # logic 
    case 27: # esc 
    # logic 
    } 
}) 
+0

嗯,我不清楚我實際上把這段代碼放在哪裏。它以某種方式嵌入$ .blockUI調用中?謝謝! – tonic 2012-07-30 12:23:53

+0

看到我的答案。您可以在加載DOM後分配這些偵聽器。 – mAu 2012-07-30 12:42:47

相關問題