2012-02-24 30 views
0

我不明白爲什麼$('#searchbox')live阻止我的搜索輸入被輸入。我可以記錄事件,但沒有任何顯示。但是,當我將搜索框註釋掉時,它似乎突然在搜索框中顯示文本。加上通過放大鏡點擊工作的搜索功能!很奇怪。搜索輸入被禁用jQuery按鍵事件和現場

有沒有人有這樣的問題?

我這樣構造它的原因是因爲我想讓這個函數被其他應用程序使用。

function initModuleSearch(selector){ 
    $('#clear_x').live('click', {name:'clear', id:selector}, performSearch);//clears search 
    $('#magnify').live('click', {name:'find', id:selector}, performSearch);//submits search 
    $('#searchbox').live('keyup', {name:'enter', id:selector}, performSearch);//submits search 
    return false; 
} 

function performSearch(evt){ 
    var eventType = evt.type;   
    var eventName = evt.data.name; 
    var selector = evt.data.id; 
    var searchInput = $('#searchbox'); 

    console.log('Hello:' + eventName) 

    //do some search and filter stuff below here 

    evt.preventDefault();//disallow browser to perform default action 
    return false; 
} 



initModuleSearch(".module");//init searchbox function 

回答

0

evt.preventDefault();甚至return false將阻止您在文本框中輸入任何內容。

如果您覺得不需要,請將其從方法中刪除。

+0

嗯...即使刪除,我似乎無法輸入搜索輸入 – 2012-02-24 22:14:44

+0

也刪除'返回false'。 – ShankarSangoli 2012-02-24 22:16:14

+0

這整個時間返回假是罪魁禍首。還要感謝Chris的評論,在驗證幫助之後移動我的evt.preventDefault()。 – 2012-02-24 22:35:33

0

你趕上的keyup事件,調用performSearch功能,並通過該事件,該函數內你再致電該事件的.preventDefault(),我相信這將防止按鍵被登記在輸入。

也許你可以嘗試這樣的:

if (eventType !== "keyup") 
    evt.preventDefault(); 

這樣一來,將元素在你的其他的點擊將被阻止,但你仍然可以鍵入搜索輸入。

澄清:

你添加你的三個初始事件偵聽器:

$('#clear_x').live('click', {name:'clear', id:selector}, performSearch);//clears search 
$('#magnify').live('click', {name:'find', id:selector}, performSearch);//submits search 
$('#searchbox').live('keyup', {name:'enter', id:selector}, performSearch);//submits search 

所有調用同一個函數performSearch。在這個函數中,你只需要捕獲evt(在搜索框中就是keyup事件)的事件,然後調用它的.preventDefault()方法evt.preventDefault(),它告訴瀏覽器放棄它的這個鍵盤事件的默認行爲,通常會將剛剛敲擊的鍵的字符添加到輸入字段中。當你說evt.preventDefault()時,你告訴瀏覽器「不要這樣做,讓我做一些其他的自定義的東西,而不是...」,所以瀏覽器不會將該按鍵添加到輸入字段。

你和我在一起嗎?

+0

我不確定我完全知道你的意思。你能以另一種方式解釋嗎? – 2012-02-24 22:06:56

+0

@RichardHartle更新了我的答案。 – 2012-02-24 22:17:49

+0

謝謝你的幫助,但是它阻止了搜索框的返回錯誤。雖然在確定按鍵13後確實有助於移動evt.preventDefault()。 – 2012-02-24 22:37:07