Включить параметр Jquery в Echo PHP со строкой

#php #jquery #html #sql

#php #jquery #HTML #sql

Вопрос:

здравствуйте, я пытался разобраться в этом уже несколько дней.

Что я хочу сделать, так это повторить тест, а затем создать кнопку, которая копирует повторенный текст в буфер обмена.

Итак, я хочу, чтобы у меня был список SQL, в этом списке есть строка идентификатора, которую я могу передать своему echo в абзаце, но когда я пытаюсь сделать то же самое с параметром, # кажется проблемой.

 while($row = mysqli_fetch_array($result)) {
   echo "<div>";
   echo "  <p id='" . $row['ID'] . "'>" . $row['Message'] . "</p>";
   echo '<button onclick="copyToClipboard('. $row['Title'] . ')">Copy TEXT 2</button>';
   echo "  </div>";
}
  

Также он каким-то образом генерирует параметр, но между ними есть пробел
(«#om2″)».

  • мой SQL
  • ID = OM2
  • Title = «#OM2»
  • Сообщение = some3ohruihrgfijbfgbrfghrgjikbnhjergbnergbg

любая помощь приветствуется

Редактировать.

Скрипт

 <script type="text/javascript">
function copyToClipboard(element) {
  var $temp = $("<textarea>");
  $("body").append($temp);
  var html = $(element).html();
  html = html.replace(/<br>/g, "n"); // or rn
  console.log(html);
  $temp.val(html).select();
  document.execCommand("copy");
  $temp.remove();
}


</script>
  

с echo '<button onclick="copyToClipboard(' . $row['Title'] . ')>Copy TEXT 2</button>';

Изображение!!!

Комментарии:

1. Вы можете использовать trim() для устранения пробелов..

2. я попробовал включить после echo и перед началом строки, попробовал использовать строку самостоятельно. Та же проблема

3. обрезать($row[‘Title’])? можем ли мы увидеть вашу javascript-функцию copyToClipboard?

4. добавил его при редактировании.

5. Может быть, это проблема с кавычками, я думаю, вы хотели бы иметь параметр в виде строки?: echo ‘<кнопка onclick=»copyToClipboard(«‘ . $row[‘Title’] . ‘»)»> Скопировать ТЕКСТ 2</button>’;

Ответ №1:

Вы пытаетесь передать #OM2 как документ copyToClipboard() функции…

Не хватает некоторых кавычек, чтобы сделать это строкой. На самом деле, #OM2 это не так.

Попробуйте добавить некоторые ' :

 echo '<button onclick="copyToClipboard(''. $row['Title'] . '')">Copy TEXT 2</button>';
  

Это должно сработать… Но я бы предложил лучшую альтернативу…
Используйте класс, обрабатывающий событие click, вместо встроенного onclick .

 while($row = mysqli_fetch_array($result)) {
   echo "<div>";
   echo "  <p id='" . $row['ID'] . "'>" . $row['Message'] . "</p>";
   echo '<button class="copy">Copy TEXT 2</button>';
   echo "  </div>";
}
  

Тогда ваш скрипт копирования в буфер обмена будет просто:

 $(".copy").on("click",function(){
  var text = $(this).prev("p").html().replace(/<br>/g, "n");
  navigator.clipboard.writeText(text);
});
  


Вот фрагмент 😉

 $(".copy").on("click",function(){
  var text = $(this).prev("p").html().replace(/<br>/g, "n");
  navigator.clipboard.writeText(text);
});  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div>
  <p id="OM2">some3ohruihrgfijbfgbrfghrgjikbnhjergbnergbg</p>
  <button class="copy">Copy TEXT 2</button>
</div>  

Комментарии:

1. Попробовал, и ничего не произошло. нажмите кнопку, но она не копирует ее в буфер обмена

2. @CarlosReyes Возможно, вам потребуется обернуть JS, предоставленный в печально известную $(document).ready(function() { оболочку.

3. Святой Иисус!!! ПОДОЖДИТЕ, переместил мой скрипт ниже >.> теги php, похоже, работают

4. Хорошо! Удачной загрузки 😉