Textarea в абзац или обычный текст

У меня есть форма, в которой пользователь может комментировать текстовое поле. Если нажата кнопка отправки, она возвращает значение того, что введено в текстовую область внутри текстовой области. Как я могу изменить это так, чтобы при отправке значение текстовой области возвращалось в виде простого текста/абзаца с помощью jquery или php?

Код для текстового поля и кнопки:

<textarea rows="6" cols="40" scroll="auto" name="reply_for_{$item.id}">
    {if isset($item.reply)}
        {$item.reply}
    {/if}
</textarea>
<br />
<input name="addcomment" value="{lang mkey='submit'}" type="button" onclick="
    document.forms['commentsFrm'].id.value={$item.id};
    document.forms['commentsFrm'].submit(); 
"/>

person Jan Oppeneer    schedule 13.02.2013    source источник


Ответы (3)


$('input[name="addcomment"]').on('click',function(){
     var comment = $('textarea').val();
     $('textarea').remove(); // removes the textarea
     var actContent = $(this).parent().html(); // get the actual content of the parent dom node.
     $(this).parent.html('<p>'+comment+'</p>'+actContent); // you set the new html content for the parent dom node

});

Таким образом, это возьмет содержимое текстовой области и сохранит его в абзаце. Немного неудобное решение, но оно должно творить чудеса.

person mas-designs    schedule 13.02.2013
comment
Привет, оба ответа, похоже, работают до тех пор, пока страница не будет полностью обновлена. Текстовое поле ненадолго исчезает и снова появляется. однако я нашел решение, добавив оператор {if} {/if} на страницу. Поэтому, когда answer = empty, отображается текстовое поле или значение ответа. Так что это решает мою проблему. Не так, как я искал, но он просто отлично работает. Спасибо за вашу помощь. - person Jan Oppeneer; 26.02.2013

Много способов сделать это, но вот что приходит на ум:

$('input[name="addcomment"]').on('click', function() {
    var textArea = $('textarea[name="reply_for_{$item.id}"]');
    var text = textArea.val();
    $('<div id="no-editing-me">').text(text).insertAfter(textArea);
    textArea.hide();
});

Если вы дадите своим элементам идентификаторы, вам не придется беспокоиться обо всей этой [name="reply_for_{$item.id}"] дряни в jQuery. Это тоже будет быстрее.

person Justin Morgan    schedule 13.02.2013

2 ответа частично решили проблему. Однако это дало мне новое вдохновение, и я решил это так.

{if $item.reply == ''}
<form name="reply" method="post" action="reply">
    <textarea id="txtreply" name="txtreply" cols="50" rows="5"></textarea>
    <input type="submit" name="btnAdd" value="{lang mkey='send'}" />
</form>

{else}

{$item.reply}

{/if}

Спасибо всем за вашу помощь

person Jan Oppeneer    schedule 06.03.2013