替换文本区域内的内容

时间:2020-06-14 08:27:21

标签: javascript html jquery

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

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

假设用户使用了这三种设备:

Laptop
Computer
PlayStation 4

提交后(使用jquery ajax),我想将内容之一替换为device-VALIDATED。结果是

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

答案 0 :(得分:1)

mat-paginator {
  height: 30px;
  margin: 0;
  padding: 0;
}

答案 1 :(得分:0)

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");

实时示例:

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>


在评论中您说过:

但是我想将textarea内的那些内容替换为device-VALIDATED,所以device的新值是device-VALIDATED

您将添加第四步:写回到textarea

$("#favDevices").val(str);

实时示例:

const favDevices = $("#favDevices");
const str =
  favDevices.val().split(/(?:\r\n|\r|\n)/)
  .map(line => line + "-VALIDATED")
  .join("\n");
favDevices.val(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>