6

ここにこのテキストフィールドとボタンがあります

<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 + 検索テキスト ボックスの値にリダイレクトすると、何も起こりません。

私は何を間違っていますか?

4

5 に答える 5

26

あなたのコードにはいくつかの問題があります:

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

    onclick="SubmitFrm(); return false;"
    
  • valueメソッドではなくプロパティであるため、呼び出すことができません:

    var Searchtxt = document.getElementById("txtSearch").value;
    
  • クエリ文字列で送信する検索クエリはエンコードする必要があります。

    window.location = "http://www.mysite.com/search/?Query="
        + encodeURIComponent(Searchtxt);
    
于 2012-10-09T14:44:37.423 に答える
4

onclickをから変更します

onclick="javascript:SubmitFrm()"

onclick="SubmitFrm()"
于 2012-10-09T14:40:04.777 に答える
2

これを行うと、私の問題が修正されました

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

テイクアウトに変更.value();.value;ました()

テキストフィールドや送信ボタンを何も変更していません

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

魅力のように機能します。

于 2012-10-09T15:14:46.237 に答える
2

やるだけ

onclick="SubmitFrm"

javascript:プレフィックスは、リンク URL にのみ必要です。

于 2012-10-09T14:40:27.883 に答える
0

コードから「javascript:」を削除すると、機能するはずです。

あなたはたまたまFireFoxを使っていますか?FireFox が「javascript:」文字列を受け入れなくなったことを他の人から知りました。ただし、私の人生では、元のソースを見つけることができません (ただし、FF アップデート ノートのどこかにあったと思います)。

于 2012-10-09T14:44:00.450 に答える