2014-12-29 11 views
5

Ich versuche, vier Leerzeichen einzufügen, wenn die Tabulatortaste gedrückt wird. Ich benutzte den folgenden Code (siehe spaces = "\t"), aber wenn ich ihn auf spaces = " " umschalte, wird nur ein Leerzeichen eingefügt, wenn ich Tab drücke. Ich habe auch versucht "" + "" + "" + "„:Fügen Sie vier Leerzeichen anstelle der Registerkarte ein

$(function() { 
    $('textarea').keydown(function(e) { 
    var keyCode = e.keyCode || e.which; 

    if (keyCode == 9) { 
     e.preventDefault(); 
     var start = $(this).get(0).selectionStart; 
     var end = $(this).get(0).selectionEnd; 

     // set textarea value to: text before caret + tab + text after caret 
     spaces = "\t" 
     $(this).val($(this).val().substring(0, start) 
        + spaces 
        + $(this).val().substring(end)); 

     // put caret at right position again 
     $(this).get(0).selectionStart = 
     $(this).get(0).selectionEnd = start + 1; 
    } 
    }); 
}); 

HINWEIS: Diese Bereiche sind in einem Browser-basierten einzufügen ist TextArea-/ide.

+2

Werke für mich in Chrom/IE9/FF32 - http://jsfiddle.net/17auq970/ - welcher Browser verwenden Sie? – Rhumborl

+1

Nicht genau verwandt, aber die Überprüfung "e.which" wird nicht benötigt, jQuery normalisiert die Eigenschaft für Sie ('which'). – Teemu

+0

Danke @Teemu guter Gedanke – maudulus

Antwort

7

Ihr Code funktioniert gut, aber Sie einfach caret gestellt der falsche Ort. Ändern Sie die letzte Zeile:

this.selectionStart = this.selectionEnd = start + spaces.length; 

DEMO:http://jsfiddle.net/qdqrs3cw/

+0

Oh wow, das habe ich komplett vermisst. Vielen Dank! – maudulus

+0

@maudulus Sie sind willkommen ':)' Auch in der Demo habe ich '$ (this) .get (0) .selection ...' mit intern die gleiche Alternative 'this.selection ...' und andere kleinere Bits zu Lassen Sie den Code schneller laufen und besser aussehen. – VisioN

-1

versuchen "&nbsp&nbsp&nbsp&nbsp" statt vier Räume

PS leider gesehen nicht einfügen, dass Leerzeichen in Textfeld, in diesem Fall HTML-Entitäten werden keine Hilfe benötigt werden

+2

'