0

テキストエリアに enscroll プラグインを適用しました。

$('textarea[name="text_area_name"]').enscroll({
    showOnHover: true, 
    scrollIncrement: 20, 
    minScrollbarLength: 25, 
    verticalTrackClass: 'track3',
    verticalHandleClass: 'handle3'
});

問題は、スペースとカーソル位置(左、上、右、下の矢印)がそのテキストエリアで機能しないことです。間隔については、次のコードを適用し、テキスト領域への書き込み中に間隔を追加するのに最適です。

$('#text_area_name').keydown(function(e) {
    var event = e.which || e.keyCode;

    // Handle Space button       
    if (event === 32) {
        var data = $(this).val();
        data += " ";
        $(this).val(data);
    }
});

CSS

textarea{
    width: 190px !important;
    height: 50px;
    resize: none;
    margin: 10px 0 0 0;
    border-radius: 5px;
    box-shadow: none;
    padding:10px;
    background-color: #EAEAEA;
}

しかし、矢印キーコードを適用してカーソルの位置を変更する方法がわかりません。誰かがそれを達成するために私を導くことができますか?

更新:テキストエリアをクリックして上下キーを押すと、動的に生成されたスクロールが移動することに気付きました。enscroll プラグインに問題があると思いますが、よくわかりません。

4

1 に答える 1

0

それが正しいかどうかはわかりませんが、コア enscroll プラグインの一部を変更しました。

keyHandler = function( event ) {
    var $this = $( this ),
        data = $this.data( 'enscroll' ),
        scrollIncrement;

    // don't handle events that have just bubbled up
    if ( event.target === this && data ) {
        scrollIncrement = data.settings.scrollIncrement;

        switch( event.keyCode ) {
            /*case 32: // space*/
            case 34: // page down
                scrollVertical( this, $this.height() );
                return false;
            case 33: // page up
                scrollVertical( this, -$this.height() );
                return false;
            case 35: // end
                scrollVertical( this, this.scrollHeight );
                return false;
            case 36: // home
                scrollVertical( this, -this.scrollHeight );
                return false;
            /*case 37: // left
                scrollHorizontal( this, -scrollIncrement );
                return false;
            case 38: // up
                scrollVertical( this, -scrollIncrement );
                return false;
            case 39: // right
                scrollHorizontal( this, scrollIncrement );
                return false;
            case 40: // down
                scrollVertical( this, scrollIncrement );
                return false;
                                    */
        }
        return true;
    }
}

これは、私が苦労したすべてのキーを処理する機能です (スペース -> 32 および 37 から 40 の方向キー)。関連するキーを無効にするだけです。

そして今、私のために働いています;)

しかし、これらのキーをコア ファイルの外部で無効にする方法はありますか? プラグインリファレンスなどを使用して?

于 2013-09-30T06:35:44.930 に答える