2016-05-26 9 views
2

Ist es möglich, ein Textfeld während der Eingabe von Daten in ein Textfeld zu ändern und es dann wieder in ein Textfeld zurückzusetzen, sobald die Benutzer-Tabs von Klicks außerhalb des Textfelds sind?Können Sie eine Texteingabe in Textarea ändern?

+2

___ ['contenteditable'] (https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Editable_content) ___ –

+1

ja es ist, aber ich fand es sehr ungewöhnlich, etwas zu tun .. .why benutzen Sie nicht textarea anfänglich mit kleiner Höhe, die wie ein Textfeld aussieht und erhöhen Sie dann seine Höhe auf Klicken, das wie ein Textarea aussieht. .this wird machbarer sein. –

Antwort

6

Die beste Lösung wäre, es in der CSS zu tun. Etwas wie folgt aus:

CSS:

.testInput:focus 
{ 
    height: 500px; 
} 

HTML:

<textarea id="text" class="testInput"> </textarea> 

Siehe Geige Arbeits https://jsfiddle.net/Lk1a5wyh/

+0

Dank genau, was ich in den Kommentaren zu sagen versuchte ..great gedanke .. –

+0

Was ist der Punkt der Erhöhung der Höhe, wenn Benutzer nicht in der nächsten Zeile schreiben kann? – Rayon

+0

das wird für mich funktionieren. danke – owen

2

Was sollten Sie sich fragen, ist "Warum?".

Sie sollten Größe, Aussehen und Verhalten über CSS und nicht mit Elementtypen manipulieren.

Für Benutzerfreundlichkeit, Zugänglichkeit und einfaches Verständnis, was los ist, sollten Sie wirklich solche Sachen vermeiden.

Edit: nur CSS-Klassen so etwas wie hinzufügen:

input { 
    height:50px; 
} 

input:focus { 
    height:200px; 
} 
1

Sie versteckte Textfeld für diese Funktionalität nutzen könnten:

HTML-Code:

<textarea id="text" style="display:none"> </textarea> 
<input id="input1"></input> 

Javascript-Code:

$(document).ready(function() { 
    $('#input1').focus(function() { 
    $('#text').show(); 
    $("#input1").hide(); 
    $("#text").focus(); 
    }); 
    $('#text').blur(function() { 
    var val1 = $(this).val(); 
    $("#input1").val(val1); 
    $(this).hide(); 
    $("#input1").show(); 
    }) 
}); 

Jsfiddle Example

0

Try This

$('input[size="100"]').each(function() { 
var style = $(this).attr('style'), 
    textbox = $(document.createElement('textarea')).attr('style', style); 
$(this).replaceWith(textbox); 

});

Verwandte Themen