#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. Хорошо! Удачной загрузки 😉