проблема с ".replaceWith" (не работает) при использовании "nl2br ()" и "Enter" в тексте базы данных - PullRequest
0 голосов
/ 06 января 2020

У меня есть текст, отображаемый из базы данных, и я создаю кнопку «Редактировать текст», чтобы отредактировать его и сохранить. Это работает, когда текст из базы данных находится в одной строке, но если я использую , введите для текста, чтобы перейти к новой строке, он не работает вообще.

Я удаляю полученный текст из части базы данных для более простого тестирования:

<?php
$rr="asdadsasd \n d"; 
?>
<form method="post" action="">
<input type="submit"  id="edp"value="EditPst">
<div class="post"id="pst"><?php echo nl2br($rr);?></div>
</form>
<script>
$(document).on("click", "#edp", function() { 
    $("#edp").replaceWith('');
    $("#pst").replaceWith('<textarea name="pps" class="post"id="pss"><?php echo nl2br($rr);?></textarea><input type="submit"  id="spp" value="save"name="svpst"><input type="submit"  id="canp" value="cansel">');
});
</script>

Если вы удалите часть \n, она будет работать нормально.

1 Ответ

0 голосов
/ 06 января 2020

Я не могу воспроизвести проблему, как вы ее описали. PHP nl2br() просто добавляет <br /> элементов при обнаружении символа новой строки (\n).

nl2br - Вставляет HTML разрывы строки перед всеми новыми строками в строке

Возвращает string с <br /> или <br>, вставленными перед всеми переводами строки (\r\n, \n\r, \n и \r).

Проверка со следующим, за исключением PHP, который не может быть обработан.

$(function() {
  $.fn.nl2br = function() {
    var re = RegExp("(?:\r\n|\r|\n)", 'g');
    var str = $(this).val();
    $(this).val(str.replace(re, "<br>"));
  }
  $("form").on("click", "#edp", function() {
    $("#edp").remove();
    var cnt = $("#pst").html();
    $("#pst").replaceWith('<textarea name="pps" class="post"id="pss"></textarea><input type="submit" id="spp" value="Save"name="svpst" /><input type="submit"  id="canp" value="Cancel" />');
    $("#pss").html(cnt);
  });
  $("form").submit(function(e) {
    e.preventDefault();
    $("#pss").nl2br();
    //return true;
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form method="post" action="">
  <input type="submit" id="edp" value="EditPst">
  <div class="post" id="pst">asdadsasd <br /> d</div>
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...