如何替换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")
}
})
$('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>