2012-02-24 19 views
0

$( '#searchbox')。liveで検索入力を入力できない理由を理解できませんが、何も表示されません。しかし、私がsearchbox行をコメントアウトすると、突然検索ボックスにテキストが表示されるようです。虫眼鏡クリックによる検索機能もプラス!非常に奇妙な。jQuery keypressイベント&ライブで検索入力が無効になる

誰もこのような問題はありましたか?

私がこのように構成した理由は、この機能を他のアプリケーションで使用したいからです。

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

Hmmm ...削除しても検索入力に入力できないようです –

+0

'return false'も削除します。 – ShankarSangoli

+0

このすべての時間が偽を返すことが原因です。また、検証後に私のevt.preventDefault()を動かすChrisのコメントのおかげで助けになりました。 –

0

あなたはperformSearch-関数を呼び出して、イベントを渡し、からkeyupイベントをキャッチし、その関数の中にあなたがして、私は入力に登録されているから、キーストロークを防ぐことができます信じているイベント、上.preventDefault()を呼び出します。あなたは、おそらくのような何かを試みることができる

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

そのように、要素へのあなたの他のクリックを防止されますが、あなたはまだ、検索入力を入力することができるようになります。

明確化:あなたが追加

あなたの3つの初期のイベントリスナー:

$('#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()が呼び出されますこのkeyup-eventのデフォルトの動作です。これは通常、入力フィールドにストロークするキーの文字を追加することです。 evt.preventDefault()と言ったら、ブラウザーに "それをしないで、他のカスタムのものをやり直させてください..."と言うので、ブラウザはそのキーストロークを入力フィールドに追加しません。

あなたは私ですか?

+0

私はあなたが何を意味するのか正確にはわかりません。別の方法で説明できますか? –

+0

@RichardHartle私の答えを更新しました。 –

+0

しかし、助けてくれたのは、検索ボックスを妨げていたのは偽の返事でした。キー13が押されたとの判断を下した後、evt.preventDefault()を移動するのに役立ちましたが。 –