0

テキストボックスがあり、ユーザーがキーを押すたびに、ユーザーがEnterキーを押したかどうかがチェックされます。Enterキーが押された場合、テキストボックスにすべての情報を追加し、ユーザーを別のURLに転送したい.

<script language="javascript" type="text/javascript">
    function checkEnter(e){ //e is event object passed from function invocation
        var characterCode;

        if(e && e.which){ //if which property of event object is supported (NN4)
            e = e;
            characterCode = e.which; //character code is contained in NN4's which property
        }
        else{
            e = event;
            characterCode = e.keyCode; //character code is contained in IE's keyCode property
        }

        if (characterCode == 13) { //if generated character code is equal to ascii 13 (if enter key)
            var searchLink = '/Search/?Keywords=' + document.getElementById('<%= searchBox.ClientID %>').value;

            transferUser(searchLink);         
            return false; 
        }
        else{
            return true; 
        }
    }

    function transferUser(url) {
        window.location.href = url;
        window.location.replace(url);   
    }
    </script>

Search: <input name="ctl00$searchBox" type="text" id="ctl00_searchBox" class="header_line_search_box_textbox" onKeyPress="checkEnter(event);" />

考えられるすべての組み合わせを試しましたが、何も起こりません。サイトが更新されるだけです。

また、テキストをユーザーから安全な html に変換する必要もあり、aspx の HttpUtility.EncodeUrl のようにする必要があります。

4

2 に答える 2

3

これらすべてが必要かどうかはわかりません。次のHTMLマークアップの通常の組み込み動作は、JavaScriptを必要とせずに、希望どおりに機能します。

<form method="get" action="/Search/">
    <input type="text" name="Keywords">
</form>

ただし、UIには、キーストロークを含まないフォームを送信するための何らかの方法があることが重要です。これには2つの理由があります。

  1. Jornが指摘したように、キーがフォームを送信することはすぐにはわかりません。
  2. 送信ボタンがないと、代替入力デバイスを使用するユーザーの使い勝手が悪くなる可能性があります。

上記の理由により、以下が推奨されます。

<form method="get" action="/Search/">
    <input type="text" name="Keywords">
    <input type="submit" value="Search or 'go' or whatever">
</form>
于 2009-11-23T20:16:48.870 に答える
2

これを試してみてください。これをローカルでテストしたところ、私のマシンで動作します

function transferUser(url) {
    window.location = url;
}

また、URL の作成方法を次のように変更する必要があります。

var searchCriteria = 
    escape(document.getElementById('<%= searchBox.ClientID %>').value); 
var searchLink = '/Search/?Keywords=' + searchCriteria
于 2009-11-23T19:37:32.243 に答える