BRAUCHE DRINGEND HILFE!
Guten Tag,
ich schreibe mir zurzeit ein kleines IDE für HTML(mit CSS und JS), und das IDE ist in HTML, JS und CSS geschrieben. Das IDE hat spezielle Funktionen(z.B. Variablen in CSS, Vererbungen von „virtuellen Objekten“, und vielem automatischem Quatsch(z.B. 10%+10px)
Da ich gerne schnell mit meinen Projekten fertig werden möchte, soll das IDE die Tabulatortaste unterstützen(funktioniert), Einrückungen bei neuer Zeile beibehalten(Da liegt der Fehler), und bei Schließ-Tags die Einrückung für die Zeile updaten(todo)
Nun ist aber der Witz: Wenn ich bei dem Start-Text Enter drücke, lande ich immer ganz vorne(=keine Einrückung). Wenn ich allerdings alles lösche und neu anfange zu schreiben, geht es. Ich blick irgendwie nicht durch xD
Hier die wichtigen Codeblöcke:
[CODE]function repstr(x,y) {//da liegt er wahrscheinlich nicht
var r=„“;
for(var i=0;i<y;i++) {
r+=x;
}
return r;
}
$(function(){//generiert den Startcode(wahrscheinlich liegt hier der Fehler)
$(„#o_code“).val(„\n\n\t\n\t\tProject 1\n\t\n\t\n\t\n“);
});
$(document).delegate(‚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
$(this).val($(this).val().substring(0, start)
+ "\t"
+ $(this).val().substring(end));
// put caret at right position again
$(this).get(0).selectionStart = $(this).get(0).selectionEnd = start + 1;
}
if (keyCode == 13) {//ab hier geht es nicht
e.preventDefault();
var start = $(this).get(0).selectionStart;
var end = $(this).get(0).selectionEnd;
var x = 0;
var y = "";
for(var i=0;i<start;i++){
y = $(this).val().charAt(start-i);
if(y=="\n") { break; }
else if(y=="\t") { x++; }
else { x=0; }
}
$(this).val($(this).val().substring(0, start)
+ "\n"
+ repstr("\t",x)
+ $(this).val().substring(end));
$(this).get(0).selectionStart = $(this).get(0).selectionEnd = start + 1 + x;
}
});
$(window).keypress(function(event) {//Hat nicht direkt mit den Fehlern etwas zu tun, aber vielleicht ist es ja doch schuld?
if (!(event.which == 115 && event.ctrlKey)) return true;
save();
event.preventDefault();
return false;
});[/CODE]
Danke für eure Hilfe,
dodo2998
PS: Das IDE könnt ihr auch benutzen, der Code ist im Anhang.
PS2: Das IDE soll auch später Animationen erstellen können, und die auch nach GIF etc. exportieren können. Und irgendwann kommt der Schritt in die 3d-Welt(3D-Sachen können als WebGL, als blender-Datei, als .obj-Datei und als html-Datei(transform) exportiert werden)
EDIT: Der Fehler muss in der keydown-sache liegen. denn die Einrückung funktioniert nur am ende des textes… wäre nett wenn ihr mir bei der Fehlersuche helft.