Javascript 如何修剪文本框开头和结尾的空格?

Javascript 如何修剪文本框开头和结尾的空格?,javascript,html,Javascript,Html,我想修剪文本框开头的所有空格,修剪文本框结尾的所有空格。因此,我在一个网站上发现了这段代码,该代码应该删除开头、结尾和中间的多个空格: function trim(s) { s = s.replace(/(^\s*)|(\s*$)/gi,""); s = s.replace(/[ ]{2,}/gi," "); s = s.replace(/\n /,"\n"); return s; } 我的问题是,首先,这3行代码中的哪一个是在中间修剪空格的一个,因为我不需要那

我想修剪文本框开头的所有空格,修剪文本框结尾的所有空格。因此,我在一个网站上发现了这段代码,该代码应该删除开头、结尾和中间的多个空格:

function trim(s) {
    s = s.replace(/(^\s*)|(\s*$)/gi,"");
    s = s.replace(/[ ]{2,}/gi," ");
    s = s.replace(/\n /,"\n");
    return s;
}
我的问题是,首先,这3行代码中的哪一个是在中间修剪空格的一个,因为我不需要那个。但是主要的问题是如何让文本框访问这个函数

我尝试过使用onkeypress,但没有成功,以下是我尝试过的:

<p>Search: <input type="text" name="questioncontent" onkeypress="return trim(s)" /></p>
搜索:

所以我想要的是,例如,如果这个短语输入文本框“我的名字是皮特”。然后它应该删除开头和结尾的空格,这样它就会显示“我的名字是皮特”。但是我怎样才能让它工作呢

更新:


发现trim()是jQuery,那么有没有人可以使用与之相当的javascript,可以手动编码以删除文本框开头和结尾的空格?

阅读注释。。这实际上取决于函数的使用方式。我试图在按键上用它进行测试,但是没有达到你想要的效果。然而,我确实得到了你想要的东西,尽管我仍然不确定这是否是你想要的


我不得不稍微修改函数来处理您的代码,但基本上,在blur上,它执行函数,并相应地更改输入文本。

您需要更改HTML:

<p>Search: <input type="text" name="questioncontent" onchange="return trim(this)" /></p>​
这将修改输入元素的值,删除前导和尾随空格,用单个空格替换多个空格,并删除换行符后的所有空格


JSfiddle:

$.trim()是一个选项,如果你想使用JQueryOh,对吧,oops,那么我的问题是有人知道javascript等价物吗?如果你检查每个按键,当用户键入多个用空格分隔的单词时会怎么样?允许使用多个单词吗?如果用户键入“foo bar”,应该在什么位置消除尾随空格?如果是每个字符;当输入“foo”时,空格将被删除,使“foo bar”只能通过粘贴方式输入。@Fakerainbrigan如我所说,我只希望在输入第一个单词之前和输入最后一个单词之后有空格时,空格才会被删除。单词之间不应出现空格。trim()不起作用。我的意思是,最后取值(当用户将焦点从输入框中移开时),并用.trim()版本替换它。这可能会有帮助。这是写Answer。你能解释发生了什么吗?如何在angular 1.x.x中使用它,我在控制器中定义了trim,当我在html中引用时,它说修剪没有定义。快速输入两个空格时添加一个点。
function trim (el) {
    el.value = el.value.
       replace (/(^\s*)|(\s*$)/gi, ""). // removes leading and trailing spaces
       replace (/[ ]{2,}/gi," ").       // replaces multiple spaces with one space 
       replace (/\n +/,"\n");           // Removes spaces after newlines
    return;
}​
function trim (el) {
    el.value = el.value.
       replace (/(^\s*)|(\s*$)/, ""). // removes leading and trailing spaces
       replace (/[ ]{2,}/gi," ").       // replaces multiple spaces with one space 
       replace (/\n +/,"\n");           // Removes spaces after newlines
    return;
}​