0

この関数を使用して検索テキストボックスの入力クリックを処理していますが、ページ内の別のボタンを起動し、そのボタンの起動を停止して search() 関数を呼び出す方法を教えてください。

InputKeyPress(e) {
    if (window.event) {
        if (event.keyCode == 13) {
            search();
        }
    } else {
        if (e) {
           if (e.which == 13) {
               search();
           }
        }
    }
 }
4

2 に答える 2

1

このkeyCode == 13場合、keypressイベントのデフォルト アクションを防止する必要があります。これを行う標準的な方法はpreventDefault、イベント オブジェクトで関数を呼び出すことです (イベント オブジェクトがある場合。以前のバージョンの IE にはありません)。false古い方法は、イベント ハンドラー関数から戻ることです。両方を行う「ベルトとブレース」のアプローチには、実際の害はありません。:-)

関数を少し短くすることもできます。

function InputKeyPress(e) {
    var keyCode;

    e = e || window.event;
    keyCode = e.keyCode || e.which;
    if (keyCode == 13) {
        search();
        if (e.preventDefault) {
            e.preventDefault();
        }
        return false;
    }
}
于 2010-11-21T08:31:27.043 に答える
1

次のように「return false」を追加する必要があります。

function InputKeyPress(e) {
    if (!e)
        e = window.event;
    var keyCode = e.keyCode || e.which;
    if (keyCode == 13) {
        search();
        return false;
    }

    return true;
}

また、呼び出しをテキストボックスから次のように変更します。

<input .... onkeypress="return InputKeyPress(event);" ...>

関数を呼び出すだけでなく、それを「返す」ことを意味します。

于 2010-11-21T08:33:08.007 に答える