2017-02-14 5 views
-1

メッセージを書き込むためのテキストボックスがあります。私はこのテキストボックスに書かれたテキストをdivに表示したい。私はそれを行うが、テキストだけが表示されますが、書式設定は、プレビューテキストに入力を使用して書いたときには意味がありません。次の行には表示されません。テキストボックスに書き込むテキストを正確に取得

function limiter(){ 
 
    var tex = document.SendSms.msg.value; 
 
    $(".speech").html(tex); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<form name='SendSms'> 
 
<textarea name="msg" id="msg" class="txtareabox" wrap='physical' onkeyup="limiter()" required ></textarea> 
 

 
<div id="mobilescreen"> 
 
    <div id="mobiletext"> 
 
    <p class="speech">See your preview here.. </p> 
 
    </div> 
 
</div>

+0

あなたは 'enter'( 'N' \、' \ Rを交換する必要が後方互換性のために聞かせて、ES6でそれを行う方法です'、' \ n \ r'' \ r \ n')を '
'で置き換えますが、そのスタイルは編集できないことに注意してください。あなたは 'var text ="

"+ textarea.value +"

"を入力し、' enter'を '

'に置き換えて 'div.innerHTML = text'を追加します。 – DomeTune

答えて

0

ここではypur問題での近似です。テキストエリアの\ nを"<br/>"に変換する必要があると考えてください。ここで

https://jsfiddle.net/qu0mcsd6/

jsのコードは次のとおりです。

function addText(){ 
    var tex = document.SendSms.msg.value; 
    tex = tex.replace(/\n/g, "<br>"); 
    $(".speech").html(tex); 
} 
$('#poner').click(addText); 

おかげ

0

formタグ内name属性が廃止され、使用されるべきではない(cf. spec)、idが代わりに使用されるべきです。

function limiter() { 
    var tex = $("#msg").val(); // get the value of the form input (textarea) and store it in tex variable 
    $(".speech").html(tex); // set the value as innerHTML of the element(s) with 'speech' class 
} 
+3

まずそれを試してみてください。それは動作します.. –

+0

このコードスニペットは大歓迎ですが、いくつかの助けを与えるかもしれませんが、* how *と* whyの(説明が含まれていれば大幅に改善されます)(// meta.stackexchange.com/q/114762) *これが問題を解決します。あなたが今質問している人だけでなく、将来読者のための質問に答えていることを忘れないでください!説明を追加するためにあなたの答えを[編集]し、どんな制限と前提が適用されるかを示してください。 –

0

あなたが返す値に<br>\nを交換する必要があります。

document.SendSms.msg.value.replace(/\n/g,"<br>"); 

がNOTE:それは、より効率的なので、あなたがjsのコード内のイベントを定義することができjQueryのを使用している、と私は代わりにkeyupinputイベントの使用を示唆しているため、ユーザー入力を追跡

$('#msg').on('input', function(){ 
    $(".speech").html($(this).val().replace(/\n/g,"<br>")); 
}) 

・ホープ、このことができます。

$('#msg').on('input', function(){ 
 
    $(".speech").html($(this).val().replace(/\n/g,"<br>")); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form name="SendSms"> 
 

 
    <textarea name="msg" id="msg" class="txtareabox" wrap='physical' required ></textarea> 
 
    and the div in which i want to show my preview: 
 

 
</form> 
 

 
<div id="mobilescreen"> 
 
    <div id="mobiletext"> 
 
    <p class="speech">See your preview here.. </p> 
 
    </div> 
 
</div>

+0

インラインでの 'onkeyup'の使用を防ぐ方が良いです。 –

0

だけ<br>に\ r \ nを変更するString.replace()を使用しています。ここ は、あなただけの代わりにCONSTのVARを使用して

const textarea = document.querySelector("textarea"); 
 
const div = document.querySelector("div"); 
 
let text = textarea.innerHTML; 
 

 
text = text.replace(/\r?\n/g, '<br>'); 
 

 
div.innerHTML = text;
<textarea> 
 
Line 1 
 
line2 
 
line3 
 
</textarea> 
 
<div></div>

+0

答えの1番目の行で、 ''
'コードをエスケープするために' 'を使うのを忘れてしまいます。 –

関連する問題