【问题标题】:Removing whitespace in textarea ignored by jQuery.trim()删除 jQuery.trim() 忽略的文本区域中的空格
【发布时间】:2019-05-10 17:46:47
【问题描述】:

我有一个<textarea>,其中包含一个由 php 调用的文本。文本包含用户的 ID,因此每个用户都不同。但是,html 看起来总是这样:

<div>
    <textarea id="text" readonly="readonly">"        example text       "</textarea>
</div>

如何删除这些空格。我在 SO 上尝试了多种修剪建议或正则表达式方法,但它们都不起作用。 textarea 不能更改为 divp

更新:
正则表达式不知何故被忽略了,但下面的答案给出了结果:

$("#text").val((i, v) => '${v.slice(1, -1).trim()}');

【问题讨论】:

    标签: javascript jquery string trim removing-whitespace


    【解决方案1】:

    您可以使用正则表达式删除引号和空格

    $("#text").val($("#text").val().replace(/^"\s+(.*?)\s+"$/,"$1"));
    console.log(">"+$("#text").val()+"<")
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div>
        <textarea id="text" readonly="readonly">"        example text       "</textarea>
    </div>

    【讨论】:

    • 此脚本导致语法崩溃,它与其他 jQuery 库冲突。所以它不起作用。你知道我能做些什么来让这个正则表达式完成它的工作吗?我试过没有这个库,但没有任何反应
    • 我不知道。您是否将文本区域用作编辑器?
    • 不,如您所见,我添加了只读属性,它只是纯文本。我不确定为什么不支持正则表达式,可能与我的核心文件有关。
    • 你没有一个表单插件来美化表单?
    • 我想避免为此使用额外的插件,如果我可以用几行 JavaScript 简单地解决它。
    【解决方案2】:

    .replace() 中使用正则表达式模式/\s{2,}/g 匹配多个空格并将它们从字符串中删除。

    $("#text").val((i, v) =&gt; v.replace(/\s{2,}/g, ''));
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div>
        <textarea id="text" readonly="readonly">"        example text       "</textarea>
    </div>

    您还可以使用String.slice() 从字符串的开头和结尾删除",然后使用.trim() 删除空格。最后用""包裹字符串

    $("#text").val((i, v) => `"${v.slice(1, -1).trim()}"`);
    

    【讨论】:

    • 不知何故,正则表达式示例不起作用,没有任何变化,我没有看到任何(语法)错误,所以我不知道为什么。但是,您的第二种方法看起来很有希望,只有文本被替换为"${v.slice(1, -1).trim()}"。这里出了什么问题?
    • `${v.slice(1, -1).trim()}`
    • @Demian 这两个代码都在 sn-p 中工作,所以您的选择器可能不正确
    • @mohammad 你已经在你的答案中声明了单引号和双引号。第二个选项正在工作
    猜你喜欢
    • 2011-12-18
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多