2012-10-09 36 views
5

私はこのテキストフィールドと、ここでボタンJavaScriptがonclickのリダイレクト

<input name="txtSearch" type="text" id="txtSearch" class="field" />    
<input type="submit" name="btnSearch" value="" id="btnSearch" class="btn" onclick="javascript:SubmitFrm()" /> 

、ユーザーがこの機能を

<script type="text/javascript"> 
    function SubmitFrm(){ 
     var Searchtxt = document.getElementById("txtSearch").value(); 
     window.location = "http://www.example.com/search/?Query=" + Searchtxt; 
    } 
</script> 

を実行すると仮定されて送信ボタンをクリックする。しかし、何も、起こらないとき、私は何を期待を持っていますユーザーが送信ボタンをクリックし、検索テキストボックスから値を取得し、ユーザーを検索テキストボックスのURL +値にリダイレクトするときです。

私は間違っていますか?

答えて

1

がこれを行うには、私が()

を取り出す.value;.value();を変更し、私の問題

<script type="text/javascript"> 
    function SubmitFrm(){ 
     var Searchtxt = document.getElementById("txtSearch").value; 
     window.location = "http://www.mysite.com/search/?Query=" + Searchtxt; 
    } 
</script> 

を固定し、私は魔法のように

<input name="txtSearch" type="text" id="txtSearch" class="field" />    
<input type="submit" name="btnSearch" value="" id="btnSearch" class="btn" onclick="javascript:SubmitFrm()" /> 

作品を私のテキストフィールドに何かを変更したり、ボタンを提出しませんでした。

4

変更するだけ

onclick="SubmitFrm" 

を行うjavascript:プレフィックスが唯一のリンクのURLに要求される

onclick="SubmitFrm()" 
2

onclick="javascript:SubmitFrm()" 

からのonclick。

0

コードから「javascript:」を削除しても問題ありません。

FireFoxを使用していますか?私はFireFoxがもう "javascript:"文字列を受け入れないことを誰かから学んだ。しかし、私の人生のために、私はオリジナルのソースを見つけることができません(私はそれがFFアップデートノートのどこかにあったと信じていますが)。

24

あなたのコード内のいくつかの問題があります。

  • は、デフォルトの動作サーバにリクエストを投稿し、ページをリロードすることで、送信ボタンのclickイベントを処理しています。あなたのハンドラからfalseを返すことによって、この動作を阻害する必要があります。

    var Searchtxt = document.getElementById("txtSearch").value; 
    
  • あなたが送信している検索クエリ:それは財産であるためではない方法で、

    onclick="SubmitFrm(); return false;" 
    
  • valueを呼び出すことはできませんクエリ文字列がencodedすることがあります。

    window.location = "http://www.mysite.com/search/?Query=" 
        + encodeURIComponent(Searchtxt);