2012-05-25 102 views
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> 

所以,我想的是,例如,如果這句話是在文本框中輸入「我的名字叫皮特」 。然後它應該刪除開始和結束處的空格,使其顯示「我的名字是皮特」。但是,我怎樣才能使這個工作?

UPDATE:

發現,修剪()是jQuery的,因此,沒有人一個JavaScript等效此可手動編碼在開始和文本框的端去除空格?

+0

$ .trim()是一個選項,如果你想使用jQuery – TGH

+0

哦,對了,哎呀,所以真的我的問題是沒有人知道的JavaScript等同? – user1394925

+0

如果您檢查每個按鍵,那麼當用戶鍵入多個由空格分隔的單詞時,該怎麼辦?是否允許多個詞?如果用戶在什麼時候輸入「foo bar」,應該刪除尾部空格嗎?如果它是每個字符;當輸入「foo」時,空格將被刪除,使得「foo bar」只能通過粘貼輸入。 – FakeRainBrigand

回答

7

你需要改變你的HTML:

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

傳遞輸入元素作爲參數來修邊,而是使用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; 
}​ 

此修改輸入元素的值,去除前導和結尾間隔,用一個空格替代多個空格,以及後換行符除去任何空格。

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

+0

你如何在角度1.xx中使用它,我在我的控制器中定義了修剪,當我在html中引用它時,修飾沒有定義。 – Suchin

0

閱讀評論..它真的取決於如何使用該功能。我試圖用onkeypress進行測試,但是這並沒有達到你想要的效果。然而,我確實得到了你想要的東西similar,但我仍然不確定這是否是你想要的。

我不得不稍微修改這個函數來處理你的代碼,但基本上,在模糊時,它會執行函數,並相應地改變輸入文本。

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

這是寫的ans – bharati

+0

你能解釋一下是怎麼回事? –

相關問題