2014-09-26 44 views
0

我有一個這樣的輸入:JavaScript的多重空間爲輸入值自修剪

<input type="hidden" name="myName" value="John Fitzgerald   Kennedy  " /> 

當我讀到使用Javascript輸入內容:

var myName = document.getElementsByName("myName")[0].value; 

MYNAME的內容:"John Fitzgerald Kennedy ";

如何獲得內容:"John Fitzgerald Kennedy "

我必須計算姓名和姓氏之間的固定字符以找到姓氏並正確分割兩個單獨的字符串。

謝謝!

+3

那麼,它不爲我做([DEMO](http://jsfiddle.net/davidThomas/81Lxzjqw/))。你網頁上發生的其他事情? – 2014-09-26 23:18:06

+0

抱歉,但您的示例幫助我找到錯誤:在輸入字符串中,我有一個像'這樣的實體,因此錯誤出現在substr計數中,因爲輸入是固定大小的文本,但實體使用5的位置並將名稱的第二部分移動到左側。如何在沒有轉換的情況下使用實體進行輸入? – Andrea 2014-09-26 23:39:42

+0

展示一個能夠再現您實際內容的示例,準確顯示您想要/需要的結果,然後我會盡我所能提供幫助。 – 2014-09-26 23:54:59

回答

0

如果我正確理解你的問題,這可能會有幫助。嘗試用一個單一的' '字符的字符串中替換空間,並從字符串這樣的開頭和結尾修剪空白:

var myName = document.getElementsByName("myName")[0].value.replace(/\s+/g,' ').trim(); 

之後,你可以解析字符串提取的名或姓這樣

var surname = myName.substring(myName.lastIndexOf(' ')); 
var givenName = myName.substring(0, myName.lastIndexOf(' ')); 

這個環節是學習字符串操作有所幫助:W3C String Reference

0

您有多個空格的內容。但是,如果您希望在像div這樣的HTML節點中看到它,則需要用&nbsp;替換空格。但在<pre>標籤你不需要更換。

http://jsfiddle.net/ha9pt60v/4/

// myName is "John Fitzgerald   Kennedy  " 
var myName = document.getElementsByName("myName")[0].value; 

// in <pre> 
document.getElementById('pre').innerHTML = myName; 

// in another tag 
document.getElementById('my').innerHTML = myName.replace(/ /g, '&nbsp;'); 
+0

但它的值爲'',它不會摺疊空格(一般來說,對於大多數HTML元素而言,您是對的;但在這種情況下,除非我錯誤地閱讀您的答案? ) – 2014-09-26 23:42:05

+0

@DavidThomas,asker說,當用'document.getElementsByName(「myName」)[0] .value'讀取時,他丟失了空格。我認爲他只是將它打印在HTML元素中,並且看不到多個空格。 – dizel3d 2014-09-26 23:53:17