javascript 如何按空格拆分输入的单词

gfttwv5a  于 2023-01-01  发布在  Java
关注(0)|答案(4)|浏览(174)

我有一个Laravel 9论坛项目,我添加了这个表单字段:

<div class="create__section">
       <label class="create__label BMehrBold" for="tags">Tags (separate each one by [space])</label>
       <input type="text" class="form-control BKoodakBold" id="tags" placeholder="Enter the keywords here">
       <span id="tagshow"></span>
    </div>

正如你所看到的,我说过每个标签应该用 * space * 分隔。
因此,如果用户输入javascript作为值,则应在tagshow部分显示:

    • 一米二米一x**

然后,他应该能够输入其他关键字,以及分隔每一个[* 空格 *]:

    • 一米三奈一x****一米四奈一x**

但我需要定义用户何时按键盘上的[* space *]键,以获取输入的标记值。
我该怎么做呢?

ljsrvy3e

ljsrvy3e1#

是的,.split().map()是您的朋友:

const [tags, tagshow]=["tags","tagshow"].map(id=>document.getElementById(id));
tags.addEventListener("input",_=>
tagshow.textContent=tags.value.trim().split(/ +/).map(w=>"#"+w).join(" "))
<div class="create__section">
   <label class="create__label BMehrBold" for="tags">Tags (separate each one by [space])</label>
   <input type="text" class="form-control BKoodakBold" id="tags" placeholder="Enter the keywords here">
   <span id="tagshow"></span>
</div>
dojqjjoe

dojqjjoe2#

您可以使用split()执行此操作:

const input = "javascript html css";

const tags = input.split(' ');
console.log(tags)
fcwjkofz

fcwjkofz3#

您可以使用String.prototype.replace()和模式$1来嵌入添加前缀#的匹配项。正则表达式/([^ ]+)/g/(\S+)/g将匹配除空格以外的任何内容(您的标记词)

const el = (sel, par) => (par || document).querySelector(sel);

el("#tags").addEventListener("input", () => {
  el("#tagshow").textContent = tags.value.replace(/([^ ]+)/g, "#$1");
});
<label>
  Tags (separate each one by [space])
  <input type="text" id="tags" placeholder="Enter the keywords here">
</label>
<div id="tagshow"></div>

上述解决方案的优点在于,您还可以非常容易地将标记 Package 到SPAN元素中,如标记 * pills *:
一个一个二个一个一个一个三个一个一个一个一个一个四个一个

vmpqdwk3

vmpqdwk34#

你可以试试这个:

function splitString() {
  const inputTags = document.getElementById("tags").value;
  const tags = inputTags.toString().split(' ');
  console.log(tags);
}
<div class="create__section">
   <label class="create__label BMehrBold" for="tags">Tags (separate each one by [space])</label>
   <input type="text" class="form-control BKoodakBold" id="tags" placeholder="Enter the keywords here">
   <span id="tagshow" style="background-color:blue; color: white; cursor:pointer;" onclick="splitString()">button</span>
 </div>

相关问题