5

入力テキスト要素で入力ボタンが押されたときに Web ページが完全に更新されないようにする方法はありますか?

Enterキーを押してオブジェクトをフィルタリングし、検索フィールドからのテキストを含むもののみを表示するときにテキストを取得できる検索フィールドを作成しようとしています。

次のようにして、入力ボタンをキャッチしようとしましたが、機能しません。

function setupSearchField() {
    document.getElementById("searchField").onKeyDown = function(event) {
        var holder;
        if (window.event) {
            holder = window.event.keyCode;
        } else {
            holder = event.which;
        }
        keyPressed(holder);
    }
}

function keyPressed(key) {
    if (key == 13) {
        event.cancelBubble = true;
        return false;
    }
}
4

4 に答える 4

6

入力要素がフォーム内にあり、そのフォームが実際にサーバーに送信されていない場合は、フォームを削除します。

コードが機能しない理由は、onkeydownイベントが小文字である必要があり、実際に何かを返さないためです(試してみてください。または、関数のコードをにreturn keyPressed(holder);移動してください。別の機能)。keyPressedsetupSearchField

于 2012-05-15T11:51:09.783 に答える
0

検索フィールドは要素内にありますか? 次に「Enter」を押すと、フォーム要素への送信イベントが発生します。

この場合、フォーム要素で onsubmit を定義することにより、フィルタリングを処理できます。

<form id="searchForm">
    <input type="text" name="search" />
</form>
<script>
    document.getElementById('searchForm').onsubmit = function() {
        var searchValue = this.search.value;
        // process
        return false;
    }
</script>

このようなものかもしれません。

于 2012-05-15T11:59:14.257 に答える
0

次の JavaScript コードを Visualforce ページに追加するだけです。

<script type='text/javascript'>
function stopRKey(evt) 
{
   var evt=(evt) ? evt : ((event) ? event : null);
   var node=(evt.target)?evt.target:((evt.srcElement)?evt.srcElement:null);
   if ((evt.keyCode == 13) && (node.type=="text")) {return false;}
}

document.onkeypress = stopRKey;
</script>
于 2016-02-19T15:18:30.330 に答える