2012-11-25 61 views
13

我有一個輸入文本,我將它用於提示項目typeahead插件,但當我按Enter鍵時輸入文本提交表單。如何防止按下提交按鈕輸入在twitter引導typeahead插件

如何防止使用twitter bootstrap typeahead插件提交表單?

JS

$(document).ready(function() { 
    $('form input').keydown(function(event){ 
    if(event.keyCode == 13) { 
     event.preventDefault(); 
     return false; 
    } 
    }); 
}); 

回答

22

您可以通過添加一個ID,並簡單地移除keydown事件的輸入,像這樣針對特定輸入,可能是因爲更新了typeahead插件,但我確實通過使用由打頭創建的「備選」輸入來傳遞問題:

$(".twitter-typeahead > input").focus(function(){ 
    //disable btn when focusing the input 
    $("#my_submit_button").prop('disabled', true); 
}).blur(function(){ 
    //enable btn when bluring the input 
    $("#my_submit_button").prop('disabled', false); 
}); 
+2

你可能不希望返回false。 @查看http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/ – Snekse

+1

也許@paganotti想要按Enter鍵在其他輸入上提交表單並忽略標籤輸入。 – hieund

3

第一個答案,我沒工作:

2

按照documentation,您可以設置選項confirmKeys到別的東西比回報(13):

$('input').tagsinput({ 
    confirmKeys: [188, 32, 39], 
}); 

然而,一個更聰明的方式去了解這是prevent sending the form on enter

1

我發現接近此方法的最佳方式不是使用提交輸入。改爲使用按鈕輸入,並添加一些js以在單擊時提交表單。

$('#my_submit_button').click(function(){ 
    $(this).parents('form').submit(); 
});