2017-06-07 22 views
0

私は自分のウェブサイトで検索機能を開発しており、検索しようとしているキーワードのページにリダイレクトしたいと思います。Enterキーでキーワードを検索する - BUG

次のコードは機能しますが、バグがあります。私が自分のホームページにenterをクリックすると、それが動作します。ユーザーは検索結果ページにリダイレクトされます。しかし、私がそのページ(または他のページ)に入っているとき、Enterキーは機能しません!常にボタンだけが動作します!それは奇妙なエラーです、私は何をすべきかわかりません...

このコードは私のmasterpage(.net 4.0)にあり、それは私のすべてのwebforms(homeを含む)の親です。誰でも助けてくれますか?

<asp:TextBox ID="TBPesquisa" runat="server" placeholder="Pesquise produtos aqui" onkeypress="return runScript(event)"></asp:TextBox> 
 

 
<button id="BTPesquisa" class="button-search" type="button" onClick="javascript:window.location.assign('/Pesquisa?val='+encodeURIComponent(document.getElementById('TBPesquisa').value));">Pesquisar</button> 
 
           
 
<script> 
 
    function runScript(e) { 
 
    if (e.keyCode == 13) { 
 
     $("#BTPesquisa").click(); 
 
    } 
 
    } 
 
</script>

+0

万が一、runScriptと呼ばれる他のスクリプトはありますか? – Icepickle

+0

いいえ...このスクリプトはここでのみ使用されています... –

+0

同じ名前の他のスクリプトはありません –

答えて

0

おそらく、その理由は、これはasp.net TextBoxコントロールであるとしてTBPesquiaフィールドが、見つからなかったということで、IDは、あなたはそれがあることを期待するものではないかもしれません。

今、あなたは同様に、ClientIDプロパティを設定するために行くことができ、次のいずれか

<asp:TextBox ID="TBPesquisa" ClientID="TBPesquisa" runat="server" placeholder="Pesquise produtos aqui" onkeypress="return runScript(event)"></asp:TextBox> 

か、以下の

<asp:TextBox ID="TBPesquisa" runat="server" placeholder="Pesquise produtos aqui" onkeypress="runScript(event)"></asp:TextBox> 

を行うことで、少し自分のハンドラを書き換えるとするRUNSCRIPTを変更することができます:

function runScript(e) { 
    var source = e.target; 
    if (e.keyCode === 13) { 
    searchFor(source.value); 
    e.preventDefault(); 
    } 
} 

function searchFor(textValue) { 
    window.location.assign('/Pesquisa?val=' + encodeURIComponent(textValue)); 
} 

私はむしろ外側の検索のためのコードを入れますsearchbutton自体では、これはあなたのhtml要素の外にこれを持っているだけです。

+0

ありがとうございました!そして私はそれを行います! :) –

関連する問題