在textarea中的多行上执行更新功能

时间:2019-07-17 00:09:04

标签: javascript php

我有一个文本区域,该区域将每一行都发布到数据库中,然后提取该数据以将其显示在单独的文本区域中。我有一个函数,当被调用时会调用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我已经连接到数据库,但是上面没有包含

1 个答案:

答案 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>