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

时间:2012-05-25 00:42:53

标签: javascript html

我想修剪文本框开头的任何空格,并修剪文本框末尾的任何空格。所以我在一个网站上找到了这个代码,假设它在开头,结尾和中间的多个空格中删除了空格:

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,所以有人可以用手工编码来删除文本框开头和结尾的空格吗?

3 个答案:

答案 0 :(得分:8)

您需要更改HTML:

<p>Search: <input type="text" name="questioncontent" onchange="return trim(this)" /></p>​

将input元素作为参数传递给trim并使用onchange而不是onkeypress。

然后修剪需要:

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;
}​

这会修改input元素的值,删除前导和尾随空格,用单个空格替换多个空格,并删除换行符后的任何空格。

JSfiddle:http://jsfiddle.net/jstoolsmith/ZNQQm

答案 1 :(得分:0)

阅读评论..这实际上取决于函数的使用方式。我尝试在onkeypress上进行测试,但是没有达到预期的效果。然而,我确实得到了similar到你想要的东西,尽管我仍然不确定这是不是你想要的。

我必须稍微修改一下这个函数才能使用你的代码,但基本上,在模糊时,它会执行函数,并相应地改变输入文本。

答案 2 :(得分:0)

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;
}​