0

さて、私はあなたが押すキー(上向きまたは下向きの矢印)に基づいてオプションを選択するこのアルゴリズムを持っています。

var nr = 0;
    $(function(){
        $('#searchbox').keyup(function(e){
            var total = $('#suggest'+nr).attr("total");
            var code = (e.keyCode ? e.keyCode : e.which);
            if ( up(code) == 1 )
            {
                if (nr == 0)
                {
                        $('#suggest'+total).addClass('hlight');
                }
            }
            else
                if ( down(code) == 1 )
                {
                    $('#suggest'+nr).css({'background':'red'});;    
                }
        });

    });

しかし、問題は、リリースするたびに、背景色を変更してから元の背景色に戻ることで、それぞれの div がほんの一瞬のように選択されることです。

div と css を強調表示して適用したままにするにはどうすればよいですか? ありがとうございました。

HTML :

<div id="search">
                <form action="home.php" method="get" name="search">
                   <input type="text" id="searchbox" name="srch" size="60" value="Search..." onFocus="if(this.value == 'Search...') {this.value = '';}" onBlur="if (this.value == '') {this.value = 'Search...';}" />
                   <input type='hidden' name='q' value='<?php echo $q; ?>' />
                   <input type='hidden' name='page' value='1' />
                  <button type="submit" id="searchb"><img src="pics/lens1.jpg" alt="Submit"></button>
                </form>

                </div><!--end search-->

PHP:

echo "<p class='suggestion' id=".$char." total=".($total-1)." style='color:black;font-size:13px;margin-bottom: 7px;'>".$id.",".$strg."</p>";

CSS:

<style >
.hlight{
    background:yellow;
}
​

</style>
4

1 に答える 1

1

ここで主要な機能を見てみましょう。

http://jsfiddle.net/Mutmatt/mQahU/

var keyMap = {
    87: 'P1UP',
    83: 'P1DOWN',
    38: 'P2UP',
    40: 'P2DOWN'
},
    getKey = function(key) {
        return keyMap[(key.which || key.keyCode)] || '';
    };

$(document).keydown(function(event) {
        switch (getKey(event)) {
        case 'P1UP':
            event.preventDefault();
            keys['P1UP'] = true;
            break;
        case 'P1DOWN':
            event.preventDefault();
            keys['P1DOWN'] = true;
            break;
        case 'P2UP':
            event.preventDefault();
            keys['P2UP'] = true;
            break;
        case 'P2DOWN':
            event.preventDefault();
            keys['P2DOWN'] = true;
            break;
        default:
            break;
        }
    });

    $(document).keyup(function(event) {
        switch (getKey(event)) {
        case 'P1UP':
            event.preventDefault();
            delete keys['P1UP'];
            break;
        case 'P1DOWN':
            event.preventDefault();
            delete keys['P1DOWN'];
            break;
        case 'P2UP':
            event.preventDefault();
            delete keys['P2UP'];
            break;
        case 'P2DOWN':
            event.preventDefault();
            delete keys['P2DOWN'];
            break;
        default:
            break;
        }
    });

役立つかもしれません?

于 2012-10-02T19:06:45.167 に答える