提问者:小点点

替换文本区域内的内容


如何替换TextArea中的一个内容。 我有一个用户最喜欢的设备的文本区。

<textarea id="favDevices" class="t"></textarea>

假设用户提供了这三个设备:

Laptop
Computer
PlayStation 4

提交后(使用jquery ajax),我想将其中一个内容替换为设备验证。 所以结果是

Laptop-VALIDATED
Computer-VALIDATED
PlayStation 4-VALIDATED

我尝试使用以下代码来解决这个问题:


$('form').submit(function(){
    f = $("#favDevices").val().split("\n")
    for(i in f){
        device = f[i];
        // function here to send data to back end
        f.replace(device, device + "-VALIDATED")
    }
})


共2个答案

匿名用户

$('form').submit(function(){
    const $favDevices = $("#favDevices")
    const unvalidated = $favDevices.val()
    const validated = unvalidated
                        .split("\n")
                        .map(line => `${line}-VALIDATE`)
                        .join("")
    $favDevices.val(validated)
})

匿名用户

textarea中的值是一个字符串。 您需要将字符串拆分成几行,在每行末尾添加-validated,然后将其重新组合为单个字符串。

我通常用这样的正则表达式拆分成行:

let lines = $("#favDevices").val().split(/(?:\r\n|\r|\n)/);

map对于处理每一行都很有用:

lines = lines.map(line => line + "-VALIDATED");

然后join重新组合成单个字符串; 选择您的分隔符,我通常使用单个\n

const str = lines.join("\n");

现场示例:

null

const str =
  $("#favDevices").val().split(/(?:\r\n|\r|\n)/)
  .map(line => line + "-VALIDATED")
  .join("\n");
console.log(JSON.stringify(str));
<textarea id="favDevices" class="t">Laptop
Computer
PlayStation 4</textarea>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>