我有一个文本区域,该区域将每一行都发布到数据库中,然后提取该数据以将其显示在单独的文本区域中。我有一个函数,当被调用时会调用php更新函数。这将更新数据库中与textarea中的行相对应的行。我想做的是在调用此更新函数时,我希望所有行都进行更新,而不仅仅是被选择的行。这是因为目前,如果在任何地方进行了更改以使行和缩进相同,那么我必须手动选择要更新的每一行。
<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我已经连接到数据库,但是上面没有包含
答案 0 :(得分:0)
也许我误解了您的问题,但是您不能简单地在文本区域上使用.setSelectionRange
来选择所有文本吗?
$('#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>