我正在尝试构建一种智能感知的文本输入框,其中随着用户键入,“and”被替换为“AND \ n”(即在每个“and”上,“and”都大写,并且用户到新行)。
我为此使用的Javascript是:
function Validate()
{
document.getElementById("search").value = document.getElementById("search").value.replace("and","AND \n"); //new line for AND
}
The HTML part is like this:
< textarea type="text" name="q" id="search" spellcheck="false" onkeyup='Validate();'>< /textarea>
尽管以上脚本在Firefox和Chrome上运行良好,但在Internet Explorer上仍存在一些问题(将光标移至每个“KeyUp”上的文本末尾)。
同样,上面的代码不适用于'and'的其他变体,例如'And','anD'甚至是'AND'本身。
最佳答案
我认为这里的实际答案是前两个的混合:
onkeyup="this.value = this.value.replace(/\band\b/ig, ' AND\n')"
您需要
i
来使搜索不区分大小写,并且需要g
来确保替换所有匹配项。这不是很有效,因为它将自己替换以前的比赛,但是会起作用。使其成为一个单独的功能:
function validate() {
document.getElementById('search') = document.getElementById('search').replace(/\band\b/ig, ' AND\n');
}