2012-12-24 9 views
12

Ich habe ein Formular mit einem Textbereich und das Drücken der Eingabetaste übergibt mein Formular. Wie kann ich ein neues Zeilenzeichen anstelle eines Formulars einreichen?Fügen Sie ein neues Zeilenzeichen zu textarea statt Formular

+0

Arbeiten Sie mit ASP.net? – anmarti

+0

kein iam arbeitet mit Spring mvc, aber das ist ein einfaches HTML-Formular. – khizar

+0

gut Kumpel Shift + als Standard-Arbeit als was Sie wollen eingeben –

Antwort

25
$('textarea').keypress(function(event) { 
    if (event.which == 13) { 
     event.preventDefault(); 
     var s = $(this).val(); 
     $(this).val(s+"\n"); 
    } 
});​ 

JSFiddle Demo

+1

gut für jeden Kumpel, der antwortete, sollte Frage richtig lesen;) –

+1

+1 für die einzige Person so weit zu tun! – Archer

+1

Nun, ich dachte, es zuerst zu beantworten, aber ich hatte eine Verwirrung über '/ n' oder' \ n';) –

1

Sie diesen Code versuchen:

$(document).ready(function() { 
    $("textarea").keydown(function(event){ 
    if(event.keyCode == 13) { 
     event.preventDefault(); 
     return false; 
    } 
    }); 
}); 
+0

Dies deaktiviert es über das Fenster, was nicht beabsichtigt ist. Sie sollten es auf das betreffende Eingabefeld beschränken. – ryadavilli

2

Dies sollte helfen

$('#myProblematicForm textarea').keypress(function(event) { 
    if (event.which == 13) { 
    event.preventDefault(); 
    this.value = this.value + "\n"; 
    } 
}); 

Für das, was es wert ist, ich bin mit Chrome auf OS X und Geben Sie fügt ein \n in einem textarea für mich und tut nicht Formulare standardmäßig absenden.

+0

Buddy ich benutze auch Google Chrome Aber unter Windows fügt es keinen Zeilenumbruch als Standard! –

+0

@AspiringAqib, ich bin nicht dein Kumpel, Kumpel: P –

+0

ok gut, ich benutze auch Google Chrome, aber unter Windows, fügt es keinen Zeilenumbruch als Standard! –

1
$(document).ready(function() { 
    $('textarea').keydown(function(event){ 
    if (event.keyCode == 13) { 
     event.preventDefault(); 
     var s = $(this).val(); 
     $(this).val(s+"\n"); 
    } 
    }); 
}); 
1

Vorherige Antworten nicht behandeln den aktuellen Wert des TextArea- Aufspalten und einfach anhängt eine neue Linie Charakter. Der folgende Befehl stoppt das Ereignis vom Bubbling bis zum Formular und erlaubt trotzdem das typische Textarea-Verhalten bei 'Enter'.

$('textarea').keydown(function(event) { 
    if (event.keyCode === 13) { 
    event.stopPropagation(); 
    } 
}); 
1

Dieser arbeitete für mich

$(document).keypress(function(e) { 
if(e.which == 13) { 
    if(document.activeElement.tagName != "TEXTAREA") { 
     e.preventDefault(); 
    }; 
    } 
}) 
0
$(document).ready(function(){ 
$("#text").keypress(function(event) { 
    if (event.which == 13) { 
     var s = $(this).val(); 
     $(this).val(s+"\n"); //\t for tab 
    } 
});  
}); 

Dies kann durch jQuery-Code durchgeführt werden, die ich oben gegeben haben. Beachten Sie, dass die Verwendung von ready-Funktion erforderlich ist, wenn Sie über Skript vor den Codes des HTML-Eingabefeldes schreiben, und nicht notwendig, wenn Sie es nach den Eingabefeldcodes schreiben. Wenn es nicht funktioniert, versuchen Sie \ t anstelle von \ zu verwenden n es wird funktionieren.

+0

Während dieser Code die Frage beantworten kann, würde die Bereitstellung eines zusätzlichen Kontextes darüber, wie und/oder warum er das Problem löst, den langfristigen Wert der Antwort verbessern. Bitte lesen Sie diese [how-to-answer] (http://stackoverflow.com/help/how-to-answer) für eine qualitativ hochwertige Antwort. – thewaywewere

+0

Danke für die Vorschläge @thewaywewere, siehe meine bearbeitete Antwort, hoffe, es könnte Ihnen helfen. –

Verwandte Themen