javascript - 对textarea中的多行执行更新功能
问题描述
我有一个 textarea 将每一行发布到数据库,然后提取该数据以将其显示在单独的文本区域上。我有一个函数,当被调用时调用一个 php 更新函数。这将更新数据库中对应于文本区域中的行的行。我想要做的是当这个更新函数被调用时,我希望所有的行都被更新,而不仅仅是被选中的那一行。这是因为目前我必须手动选择要更新的每一行,如果在任何地方进行了更改以确保行和缩进是相同的。
<script>
var lineNo = 0;
var lineText = "";
var ta;
var numOfSpaces;
function update(e) {
ta = $("#textEditor")[0];
lineNo = ta.value.substr(0, ta.selectionStart).split(/\r?\n|\r/).length;
lineText = ta.value.split(/\r?\n|\r/)[lineNo - 1];
numOfSpaces = lineText.split(/\s/).length - 1;
console.log(" line num: " +lineNo+ " line data: " + lineText);
$.ajax({
url: "update1.php",
method: "POST",
data: {lineN: lineNo, lineT: lineText},
dataType: 'text',
success: function(data){
console.log(data);
}
});
}
$('#textarea').keydown(update).mousedown(update);
以上是捕获一行文本和相应行号的函数。它将信息传递给以下 php 文件
<?php
$linec = $_POST['lineT'];
$linenumber = $_POST['lineN']
$update = "UPDATE Code_Stream1 SET Line_Code='$linec' where LineNumber='$linenumber' ";
$resultinsert = $conn->query($update);
echo $update;
?>
ps 我有一个到数据库的连接,但上面没有包含
解决方案
也许我误解了你的问题,但你不能简单地使用.setSelectionRange
textarea 来选择所有文本吗?
$('#textEditor').on('focus', function(e) {
// setTimeout skips to the next tik in the eventLoop
// preventing timing issues in some browser
setTimeout(function() {
e.currentTarget.setSelectionRange(0, e.currentTarget.value.length);
}, 0);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea id="textEditor" rows="4">
Line 1
Line 2
Line 3
Line 4
</textarea>
推荐阅读
- python - AttributeError:“str”对象没有属性“unitPrice”
- python - 如何将一列中带有变量的csv加载到数据框中
- android - 如何将相同的圆角设置为线性布局?
- javascript - AMCharts 问题:堆叠时我的 XY DateAxis 缩小到 1970
- function - 使用比较器功能时超出内存限制
- python - 根函数在 statsmodels 中如何工作?
- android - 样式不起作用 Material Design Android Studio
- java - 通过 Liquibase 在文件搜索 master.xml 中构建 Travis CI 的问题
- julia - 使用特殊字符“>”在 Julia 中运行外部程序
- android - 如何更有效地更新 UI